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

R 如何删除特定列值之间的行,r,dataframe,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, c

我有一个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)
开始和结束字符串出现在整个数据帧中,它们是随机的。我尝试了shift函数,但到目前为止运气不佳。

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

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

开始,非常感谢。现在我了解了mapply和unlist,以及它们如何在data.frame操作中一起使用。
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