R按每列值分割矩阵

时间:2016-03-28 09:35:14

标签: r matrix split dataframe

我在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和其他人区分开来。

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