【发布时间】:2018-05-17 03:30:30
【问题描述】:
我正在尝试扩展 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 个观察值,“a”和“b”各 4 个,并且年份是开始和结束(包括)之间的值之一。所以:
id year
a 2002
a 2003
a 2004
a 2005
b 2004
b 2005
b 2006
b 2007
据我了解,各种版本的 expand 仅适用于唯一值,但这里我的数据框没有所有唯一值(明确地)。
我正在考虑逐步遍历每一行,然后使用 sapply() 生成一个数据框,然后将所有新数据框连接在一起。但这次尝试失败了:
sapply(test,function(x) { data.frame( id=rep(id,x[["end"]]-x[["start"]]), year = x[["start"]]:x[["end"]] )})
我知道必须有一些 dplyr 或其他魔法来解决这个问题!
【问题讨论】: