从数据帧中提取并根据条件进行合并

时间:2012-07-19 12:38:49

标签: r

我有一个像ba这样的数据框。

我需要根据区域提取数据框并根据日期进行合并。

如果我手动完成,如下所示。但是如果区域的数量超过两个,我需要使用sapply提取然后我需要合并(不确定我如何使用循环或sapply)。请建议我如何基于“区域”提取,然后合并,即使有两个以上的区域(例如:betasol,alpha,atpTax)动态。

    > ba
             date  region AveElapsedTime
    1  2012-05-19 betasol           1372
    2  2012-05-22  atpTax           1652
    3  2012-06-02 betasol           1630
    4  2012-06-02  atpTax           1552
    5  2012-06-07 betasol           1408
    6  2012-06-12 betasol           1471
    7  2012-06-15 betasol           1384
    8  2012-06-21 betasol           1390
    9  2012-06-22  atpTax           1252
    10 2012-06-23 betasol           1442
    > dfa <- ba[ab$region == "atpTax", c("date", "AveElapsedTime")]
    > dfb <- ba[ab$region == "betasol", c("date", "AveElapsedTime")]
    > merge(dfa, dfb, by="date", all=TRUE)
            date AveElapsedTime.x AveElapsedTime.y
    1 2012-05-19               NA             1372
    2 2012-05-22             1652               NA
    3 2012-06-02             1552             1630
    4 2012-06-07               NA             1408
    5 2012-06-12               NA             1471
    6 2012-06-15               NA             1384
    7 2012-06-21               NA             1390
    8 2012-06-22             1252               NA
    9 2012-06-23               NA             1442


    extractfun <- function(z, ab) {
    df[z] <- ab[ab$region == z, c("date","region")]
    }
    sapply(unique(ba$region), FUN=extractfun, ab=avg_data)

1 个答案:

答案 0 :(得分:2)

require(reshape)    
cast(ba,date~region)