使用R过滤掉数据帧列中的非连续数字

lok*_*art 2 r

假设我有一个这样的数据帧:

DAYS   VALUE
1      A
2      A
3      A
5      A
7      A
9      A
10     A
12     A
13     A
14     A
15     A
Run Code Online (Sandbox Code Playgroud)

我试图导出一个函数,以便只保留一系列连续数字(最小值为3),如下所示:

DAYS   VALUE
1      A
2      A
3      A
12     A
13     A
14     A
15     A
Run Code Online (Sandbox Code Playgroud)

我想知道包中是否有任何功能可以做到这一点?

谢谢!

koh*_*ske 12

必须有更简单的方法...但作为oneliner:

d[(1+(s<-c(0,cumsum(1-(diff(d$DAYS)==1)))))%in%which(table(s)>=3),]
Run Code Online (Sandbox Code Playgroud)

一步步

d1 <- c(FALSE, diff(d$DAYS)!=1)
d2 <- cumsum(d1)+1
d3 <- table(d2)
d4 <- which(d3 >= 3)
d[d2 %in% d4,]
Run Code Online (Sandbox Code Playgroud)