我有逐秒数据,并希望根据变量“加速度”的某些条件创建一个新的变量“类别”。具体而言,如果“加速度< = -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)
答案 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)
。