我在R中有一个这样的数据框(比这长得多,但我想总结一下):
label id value1 value2
p01 1 0 0
p02 2 1 3
p03 1 0 5
p04 2 2 4
p05 3 6 7
p06 1 0 8
并希望将它们从id列中的每1个值中拆分出来。所以在结果中我应该有3个子矩阵,如:
p01 1 0 0
p02 2 1 3
p03 1 0 5
p04 2 2 4
p05 3 6 7
p06 1 0 8
我怎么能这样做?我试过了:
result=split(xx,xx$id==1)
但它将1和其他人区分开来。
答案 0 :(得分:5)
我们可以通过获取逻辑向量(df1$id==1
)的累积和来创建分组变量
split(df1,cumsum(df1$id==1))
#$`1`
# label id value1 value2
#1 p01 1 0 0
#2 p02 2 1 3
#$`2`
# label id value1 value2
#3 p03 1 0 5
#4 p04 2 2 4
#5 p05 3 6 7
#$`3`
# label id value1 value2
#6 p06 1 0 8