【问题标题】:Subsetting column and select next n rows based on value in the same column子集列并根据同一列中的值选择下 n 行
【发布时间】:2024-01-13 21:50:02
【问题描述】:

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

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 行,但不幸的是,我要提取的大多数变量的长度不同,因此无法正常工作。有什么方法可以以相对简单的方式完成吗?

【问题讨论】:

  • @Sotos 谢谢!效果很好!

标签: r dataframe subset


【解决方案1】:

您可以使用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

【讨论】:

    最近更新 更多