如何删除特定列值之间的行

时间:2020-10-29 01:34:20

标签: r dataframe

我有一个具有以下结构的data.frame

time <- c(0,"start",200,300,"end", 500)
c1 <- c(3.1, "start", 4.5, 4.1, "end", 3.5)
c2 <- c(4.4, "start", 4.5, 4.1, "end", 4.8)
df <- data.frame(time, c1, c2)

我正在尝试删除包含和在2至5之间的行。最后的data.frame将是:

time  c1   c2
0     3.1  4.4
500   3.5  4.8

开始和结束字符串出现在整个数据帧中,并且是随机的。我尝试过移位功能,但到目前为止还算不上运气。

1 个答案:

答案 0 :(得分:1)

假设每个“开始”都有一个“结束”,则可以在这些索引之间创建一个序列并将其删除:

start <- which(df$time == 'start')
end <- which(df$time == 'end')
df[-unlist(mapply(`:`, start, end)), ]

#  time  c1  c2
#1    0 3.1 4.4
#6  500 3.5 4.8
相关问题