这是我的解法,可能有点复杂,欢迎更好的解法,我的想法是将字符
那一列转为字符串,然后借助正则表达式进行处理。
aa<-data.frame(数值=c(50,110,120,110,105,101,103,30,40,101,102,110),
字符=c(rep("a",2),rep("b",2),rep("a",3),"b",rep("a",4)))
library(stringr)
b<-Reduce(paste0,unlist(aa$字符))
locates<-str_locate_all(b,"a{3,}")[[1]]
for(i in 1:nrow(locates)){
start<-locates[i,][1]
end<-locates[i,][2]
flag<-rep('N',end-start+1)
bigger<-aa$数值[start:end]>100
for(j in 1:(end-start+1)){
if(bigger[j]){flag[j]<-'Y'}
}
row_num<-start:end
d<-Reduce(paste0,unlist(flag))
e<-str_locate_all(d,"Y{3,}")[[1]]
cat(row_num[e[,2]],'\n')
}
#> 7
#> 12
<sup>Created on 2021-04-05 by the reprex package (v2.0.0)</sup>