不确定我的问题是否重复,但在 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/