2012-06-17 31 views
4

我有以下的数据帧如何将病例分配到不规则的时间间隔?

> head(elo) 
     date elo 
1 1921-12-18 1597 
2 1922-05-14 1583 
3 1922-05-28 1595 
4 1922-09-03 1595 
5 1922-10-01 1612 
6 1923-06-03 1597 
[...] 
> head(coaches) 
     surname  start  stop 
     Smith 1921-12-18 1922-05-28 
     White 1922-06-01 1923-06-28 
     Black 1923-09-13 1928-01-01 

输出应该看起来像:

 date elo coach 
1 1921-12-18 1597 Smith 
2 1922-05-14 1583 Smith 
3 1922-05-28 1595 Smith 
4 1922-09-03 1595 White 
5 1922-10-01 1612 White 
6 1923-06-03 1597 White  
[...]  

我如何分配基于startstopcoaches$surnameelo行? coaches数据帧中的间隔不重叠。

回答

4
lst <- lapply(1:nrow(coaches),function(x) 
      elo[which(elo$date >= coaches$start[x] & elo$date <= coaches$stop[x]),]) 
cbind(as.data.frame(do.call(rbind, lst)), 
     coach = rep(coaches$surname, sapply(lst, function(x) nrow(x)))) 
     date elo coach 
1 1921-12-18 1597 Smith 
2 1922-05-14 1583 Smith 
3 1922-05-28 1595 Smith 
4 1922-09-03 1595 White 
5 1922-10-01 1612 White 
6 1923-06-03 1597 White 
相关问题