子集列,并根据同一列中的值选择下一行

时间:2017-12-13 10:11:42

标签: r dataframe subset

我在数据框中有一个列,我希望根据同一列中的标题进行子集化。它基本上看起来像这样:

df <- data.frame(col = c("Var: A", "1", "3", "5", "Var:B", "2", "4", "6", "7", "Var: C", "7", "1"))

[df]
      col
1  Var: A
2       1
3       3
4       5
5   Var:B
6       2
7       4
8       6
9       7
10 Var: C
11      7
12      1

我想要做的是根据不同的'Var'标题对此列进行子集化,最后得出结论:

[1] Var: A
         1
         3
         5
[2] Var: B
         2
         4
         6
         7

最后将它们存储在不同的变量中。

我已经查看了解释如何在列中的特定值之前或之后选择n行的示例,但遗憾的是,我想要提取的大多数变量具有不同的长度,因此无效。有什么办法可以用相对简单的方式完成吗?

1 个答案:

答案 0 :(得分:2)

您可以使用grepl查找Vars和拆分,即

split(df, cumsum(grepl('Var', df$col)))

给出,

$`1`
     col
1 Var: A
2      1
3      3
4      5

$`2`
    col
5 Var:B
6     2
7     4
8     6
9     7

$`3`
      col
10 Var: C
11      7
12      1