Я пытаюсь расширить фрейм данных в R с отсутствующими наблюдениями, которые не сразу очевидны. Вот что я имею в виду:
data.frame(id = c("a","b"),start = c(2002,2004), end = c(2005,2007))
Что такое:
id start end
1 a 2002 2005
2 b 2004 2007
То, что я хотел бы, это новый фрейм данных с 8 полными наблюдениями, 4 для каждого «a» и «b», и год, который является одним из значений между началом и концом (включительно). Итак:
id year
a 2002
a 2003
a 2004
a 2005
b 2004
b 2005
b 2006
b 2007
Как я понимаю, различные версии расширения работают только с уникальными значениями, но здесь мой фрейм данных не имеет всех уникальных значений (явно).
Я думал пройтись по каждой строке, а затем с помощью sapply () сгенерировать фрейм данных, а затем объединить все новые фреймы данных. Но эта попытка не удалась:
sapply(test,function(x) { data.frame( id=rep(id,x[["end"]]-x[["start"]]), year = x[["start"]]:x[["end"]] )})
Я знаю, что должен быть какой-то dplyr или другая магия, чтобы решить эту проблему!