根据列中的条件删除行(保留两个值之间的行)

时间:2018-01-21 17:52:30

标签: r dataframe

我有一个包含两列的数据框df1:

c1  <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
c2  <- c(0,0,0,1,0,0,2,0,0,0,1,0,0,2)
df1 <- data.frame(c1,c2)

我想根据列c2上的条件删除行。我能够使用与df1<-df1[!(df$c2==1),]类似的东西来实现这一点 但我的问题是我想要删除c2值0和1(包括)之间的所有行,并保持在1和2之间(不包括)。这些值之间的行数在我的数据中不固定。 我想实现:

df2 <- data.frame(c(0,0,0,0),c(5,6,12,13))

有人可以帮助我实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

使用tidyverse包尝试此解决方案:

library(purrr)
start <- which(c2 == 1) + 1
stop <- which(c2 == 2) - 1
idx <- unlist(map2(start, stop, seq))
df2 <- df1[idx, ]