子集乘以下一行的值

时间:2018-05-02 16:24:22

标签: r

我希望通过一列的下一行的值来对行进行子集化。

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中的lagIntelliJ 2018.1,如其他答案所述,但我无法让它发挥作用。

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)