在面板数据框中进行分组观察的条件

时间:2019-04-10 14:22:14

标签: r

我有一个看起来像这样的数据框

id year changetype
 1  2010         1
 1  2012         2
 2  2014         2
 2  2014         2
 3  2012         1
 3  2012         2
 3  2014         2
 3  2014         1

我想得到这样的东西

id year changetype
 1  2010         1
 1  2012         2
 2  2014         2
 2  2014         2

换句话说,我想删除与id 3相关的所有观察值,因为在同一年(2012年),id = 3表示changetype = 1和changetype = 2。

我如何对变量进行附加条件,以便按ID和年份分组观察? 非常感谢大家的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用data.table软件包来实现这一目的-

library(data.table)
setDT(dt)
dt[,count:=lapply(.SD,function(x)length(unique(x))), by=.(id,year)]
dt[,keep:=uniqueN(count), by=id][keep==1,.(id,year,changetype)]

   id year changetype
1:  1 2010          1
2:  1 2012          2
3:  2 2014          2
4:  2 2014          2