【问题标题】:Subset rows based on "start and stop" strings基于“开始和停止”字符串的子集行
【发布时间】:2018-12-10 18:10:26
【问题描述】:

希望编写一个 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等于'c'的行数不超过2行

非常感谢任何帮助。

【问题讨论】:

  • 如果找到三个c怎么办?另外,请在reproducible format 中分享您的数据,以便我们可以复制/粘贴到 R 中进行测试。
  • 好点,我忘了提——没有一个角色会被重复两次以上,所以会有明确的起点和终点
  • Reduce(seq, which(your_data[, 1] == 'c')[1:2])

标签: r dplyr subset rows


【解决方案1】:

您可以使用函数which 查找值的位置,并将其用作索引来获取您要查找的值。如果你想要从第一个到第二个“c”的所有内容,它看起来像这样:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-14
    • 2014-12-19
    • 1970-01-01
    • 2016-04-30
    • 2011-11-28
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    相关资源
    最近更新 更多