【发布时间】:2021-05-09 14:23:07
【问题描述】:
编辑删除这个,因为已经过时了
【问题讨论】:
标签: r select subset frame data-manipulation
编辑删除这个,因为已经过时了
【问题讨论】:
标签: r select subset frame data-manipulation
使用which 获取Y = 0 所在的索引位置并对数据进行子集化。
inds <- which(df$Y == 0)
df <- df[inds[1]:inds[2], ]
df
# X Y
#2 2 0.0
#3 3 -0.2
#4 4 -0.4
#5 5 0.0
数据
df <- structure(list(X = 1:6, Y = c(-0.1, 0, -0.2, -0.4, 0, -0.2)),
class = "data.frame", row.names = c(NA, -6L))
【讨论】:
which 而不是 cumsum。我更正了答案,还包括了我用来测试的数据。它似乎可以工作。
我们可以使用filter 和cumsum
library(dplyr)
df %>%
filter(lag(cumsum(Y == 0)) < 2)
# X Y
#1 2 0.0
#2 3 -0.2
#3 4 -0.4
#4 5 0.0
df <- structure(list(X = 1:6, Y = c(-0.1, 0, -0.2, -0.4, 0, -0.2)),
class = "data.frame", row.names = c(NA, -6L))
【讨论】: