从数据框中提取并基于条件进行合并
问题描述:
我有一个像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)
精彩......非常感谢你..它工作正常.. – Tamilan 2012-07-19 15:05:42