2017-06-21 76 views
0

我有秒數據並希望基於變量「acceleration」上的某些條件創建新變量「category」。具體而言,如果「加速度爲< = -2 OR(前一秒的加速度爲前一秒秒< -1的當前第二加速度),那麼」類別「等於1,否則它是0.在R中包含ifelse()函數中的lag()

我猜我應該在代碼中的某處使用lag()來解釋時滯,但它不起作用......有人能指出我的錯誤並糾正我嗎?謝謝。 ..

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

小於負數時要小心,您希望「<-1」不是賦值運算符「<-1」。 – Gregor

回答

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) 

您可以通過rm(df.lag)擺脫df.lag