我希望通过一列的下一行的值来对行进行子集化。
df <- data.frame(t = c(1,2,3,4,5,6,7,8),
b = c(1,2,1,0,1,0,1,2))
因此,我希望对df
进行分组,并获取b == 2
所在行b == 1
之后的行which
。因此子集应返回2行(其中t = 1且t = 7)
我尝试使用dplyr中的lag
和IntelliJ 2018.1
,如其他答案所述,但我无法让它发挥作用。
答案 0 :(得分:1)
我们可以使用lead
获取下一个值,创建条件以检查它是否等于2且当前值为1并在filter
library(dplyr)
df %>%
filter(b == 1, lead(b)==2)
# t b
#1 1 1
#2 7 1
或使用subset
base R
subset(df, c(b[-1] == 2, FALSE) & b == 1)