假设我在面板数据格式中有一个不平衡的数据框:
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
有什么方法可以做到这一点? 提前致谢
答案 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)