r - 在 R 数据框中查找列值遵循序列的行

标签 r dataframe

我有一个如下数据框,它是分类器的输出。

col1, class
 123, 2
 122, 5
 124, 7
 125, 9
 126, 15
 127, 2
 128, 19
 129, 5
 130, 7
 179, 9
 180, 3

我想查找具有特定类模式的行,例如类位于 seq 5,7,9 中的所有行。

我想出的解决方案是通过移动一行并比较列来粘贴类列,如下所示

 col1, class, class1, class2
 123, 2,5,7
 122, 5,7,9
 124, 7,9,15
 125, 9,15,2
 126, 15,2,19
 127, 2,19,5
 128, 19,5,7
 129, 5,7,9
 130, 7,9,3
 179, 9,3,NA,
 180, 3,NA,NA

仅当我的模式中的字段数相同时,此问题才能解决,但我的字段数会发生变化。有些模式甚至可以有 5 到 7 个字段。

最佳答案

我们可以使用 data.table 中的 shift,然后将元素粘贴在一起并检查 579 的位置>

n <- 3
library(data.table)
setDT(df1)[, which(do.call(paste0, shift(class, seq(n)-1, type = "lead"))=="579")]
#[1] 2 8

或者我们可以使用 MapReduce 来代替 paste

setDT(df1)[,  which(Reduce(`&`, Map(`==`, shift(class, seq(n)-1, 
             type = "lead"), c(5, 7, 9))))]
#[1] 2 8

关于r - 在 R 数据框中查找列值遵循序列的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37770801/

相关文章:

r - 使用 ggplot_build () 手动设置后,如何在 ggplot 箱形图中自定义凹口?

r - 使用 tidyeval 编程: tidyr::unite(col = !!col) 之后的 mutate 函数

python - 当组列中的 NaN 时,Pandas groupby 会应用奇怪的行为

python - 从另一个 Dataframe 的列中为 Dataframe 中的每一行查找特定值

python - 具有组条件的 Pandas 自定义聚合函数,可能吗?

r - 不使用 head(key(DT),m) 对 data.table 进行子集化,使用二进制搜索而不是矢量扫描

r - 在 Mac 上自动化 R 脚本

python - Pandas |在列中列出到二进制列

r - 合并 2 个以上的数据帧,同时在 R 中分配一个标识符因子

r - 如何根据正则表达式在 dplyr 中分隔列