2012-06-17 2 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  
[...]  

Как я могу назначить coaches$surname на elo строк на основе start и stop столбцов? Интервалы в coaches dataframe не перекрываются.

ответ

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 
Смежные вопросы