【发布时间】:2014-04-03 16:03:40
【问题描述】:
我在 R 中有一个不平衡的面板数据集。以下将作为示例:
dt <- data.frame(name= rep(c("A", "B", "C"), c(3,2,3)),
year=c(2001:2003,2000,2002,2000:2001,2003))
> dt
name year
1 A 2001
2 A 2002
3 A 2003
4 B 2000
5 B 2002
6 C 2000
7 C 2001
8 C 2003
现在,我需要对每个 name 至少有 2 个连续的 year 观察。因此,我想删除第 4、5 和 8 行。如何在 R 中最好地做到这一点?
编辑:
感谢下面的评论,我可以更清楚一点。如果我对name=C 和year=2004 有额外的观察(第 9 行),我希望将第 8 行和第 9 行与其他行一起保留。
【问题讨论】:
-
如果第 9 行包含
C 2004怎么办?然后你想保留它和第 8 行吗? -
如果你有这个名字怎么办:
2000,2002,2003,2005,2007,2008?你应该保留2002,2003,2007,2008吗?如果是这样,那将导致不连续的年份。对吗? -
@JuliánUrbano 是的,我想保留 2002,2003,2007,2008。抱歉,我的问题不清楚,但我不知道如何更好地表达。
-
我试图想出一种结合
plyr::ddply(对name值进行分块操作)和rle()(仅选择连续行)的方法,但还没有任何工作。
标签: r subset panel-data