在R中的ifelse()函数中包含lag()

时间:2017-06-21 21:13:23

标签: r if-statement dplyr lag

我有逐秒数据,并希望根据变量“加速度”的某些条件创建一个新的变量“类别”。具体而言,如果“加速度< = -2 OR(当前秒的加速度< -1&加速度为前一秒< -1&加速度为前两秒< -1),则”类别“等于1,否则为0。

我猜我应该在代码中的某个地方使用lag()来解释时滞,但它只是不起作用...有人能指出我的错误并纠正我吗?感谢...

 df$category <- ifelse(df$acceleration<=-2 | 
                     (df$acceleration<-1 & lag(df$acceleration, 1)<-1 & 
                      lag(df$acceleration, 2) < -1), 1,0)

1 个答案:

答案 0 :(得分:0)

您可能想稍微操纵一下数据框:

df.lag <- df %>%
            mutate(acc1=lag(acceleration)) %>% #Acceleration of previous time step
            mutate(acc2=lag(acc1))             #Acceleration of two steps before

然后,您可以更轻松地应用if-statement(或至少更清洁):

df$category <- ifelse(df.lag$acceleration <= -2 | 
                    (df.lag$acceleration < -1 & df.lag$acc1 < -1 & df.lag$acc2 < -1), 1, 0)

您可以df.lag删除rm(df.lag)