我有一个包含两列的数据框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))
有人可以帮助我实现这个目标吗?
答案 0 :(得分:1)
使用tidyverse
包尝试此解决方案:
library(purrr)
start <- which(c2 == 1) + 1
stop <- which(c2 == 2) - 1
idx <- unlist(map2(start, stop, seq))
df2 <- df1[idx, ]