从数据框中提取并基于条件进行合并

问题描述:

我有一个像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) 

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

精彩......非常感谢你..它工作正常.. – Tamilan 2012-07-19 15:05:42