首页 > 解决方案 > 基于“开始和停止”字符串的子集行

问题描述

希望编写一个 R 脚本,该脚本将在列中搜索特定值并开始子设置行,直到达到特定文本值。

例子:

    X1  X2 
[1,] "a" "1"
[2,] "b" "2"
[3,] "c" "3"
[4,] "d" "4"
[5,] "e" "5"
[6,] "f" "6"
[7,] "c" "7"
[8,] "k" "8"

我想做的是搜索X1直到'c'找到字母,然后开始对行进行子集化,直到'c'找到另一个字母,此时子集过程将停止。使用上面的例子,结果应该是一个包含c(3,4,5,6,7).

X1假设等于的行不超过 2 行'c'

任何帮助是极大的赞赏。

标签: rdplyrsubsetrows

解决方案


您可以使用 function 查找值的位置which,并在 index 中使用它来获取您要查找的值。如果你想要从第一个到第二个“c”的所有内容,它看起来像这样:

indices <- which(df$X1=='c')
range <- indices[1]:indices[2]
df$X2[range]

推荐阅读