将Panel数据拆分为组

时间:2018-01-25 13:33:51

标签: r split

假设我在面板数据格式中有一个不平衡的数据框:

ID <- c(1,1,1,2,2,3,3,3,4,4)
Year <- c(2001,2002,2003,2001,2002,2001,2002,2003,2002,2003)
Observ <- c(0,1,1,0,0,2,2,2,1,2)

df <- as.data.frame(cbind(ID,Year,Observ))

ID Year  Observ.
1   2001  0
1   2002  1
1   2003  1
2   2001  0
2   2002  0
3   2001  2
3   2002  2
3   2003  2
4   2002  1 
4   2003  2

我想要做的是拆分数据帧(使用拆分,这很容易)但是这里有一个问题:我希望每个块不分割ID,即中断 通过ID将多个人聚集在一起,但不会破坏他们的时间连续性。像

这样的东西
$1
Year  Observ.
1   2001  0
1   2002  1
1   2003  1
2   2001  0
2   2002  0

$2
Year  Observ.
3   2001  2
3   2002  2
3   2003  2
4   2002  1
4   2003  2

有什么方法可以做到这一点? 提前致谢

1 个答案:

答案 0 :(得分:2)

我们可以通过使用split

创建分组变量来执行%/%
split(df, (df$ID-1) %/% 2 + 1) 

如果&#39; ID&#39;列不是数字,然后对match元素执行unique以使其numeric并在匹配的索引上拆分

indx <- match(df$ID, unique(df$ID))
split(df, (indx - 1) %/% 2 + 1)