2017-06-21 11 views
0

に含めます。私はsec-by-secのデータを持ち、変数 "acceleration"のいくつかの条件に基づいて新しい変数 "category"を作成したいと考えています。具体的には、「加速< = -2 OR(現在の第2の加速度が前の秒の加速<-1 &の前回の加速度< -1 &の前回の加速度の2倍の加速度< -1の場合)、「カテゴリ」は1に等しく、そうでなければそれは0です。ifelse()関数のlag()をR

私は、タイムラグを説明するためにコードのどこかで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を取り除くことができます。

関連する問題