我有一个具有以下结构的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
开始和结束字符串出现在整个数据帧中,并且是随机的。我尝试过移位功能,但到目前为止还算不上运气。
答案 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