不确定我的问题是否重复,但在 stackoverflow 中搜索没有产生任何可能的解决方案。

我有以下数据框

num   char
1     A
2     K
3     I
4     B
5     I
6     N
7     G
8     O
9     Z
10    Q

我只想选择在 char 列中形成单词 BINGO(按该顺序)的那些行,从而产生以下数据框:
num char
4     B
5     I
6     N
7     G
8     O

任何帮助将非常感激。

最佳答案

一种选择是使用 zoo::rollapply :

library(zoo)
bingo = c("B", "I", "N", "G", "O")    # the pattern you want to check

# use rollapply to check if the pattern exists in any window
index = which(rollapply(df$char, length(bingo), function(x) all(x == bingo)))

# extract the window from the table
df[mapply(`:`, index, index + length(bingo) - 1),]

#  num char
#4   4    B
#5   5    I
#6   6    N
#7   7    G
#8   8    O

关于r - 根据字符的有序向量过滤数据帧行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43002159/

10-12 19:37