2016-11-25 6 views
-1

データフレーム列を下に移動するときに、追加基準を使用してパーセント変化を計算したいとします。以下の表を例として、日付間の変化率を計算しますが、計算を行う前に同じ期間にValue.2を差し引いて計算します。次の期間のパーセント変更には完全な値が必要なため、減算はValue.1に影響しませんでした。基準列を使用して期間変更を計算する方法

 Date Value.1 Value.2 Percent.Change 
1 1/1/2017  100  NA    NA 
2 1/2/2017  105  NA   0.05 
3 1/3/2017  103  NA   -0.02 
4 1/4/2017  101  NA   -0.02 
5 1/5/2017  99  10   -0.12 
6 1/6/2017  115  NA   0.16 

私が確信している部分は、条件付き計算です。私は期間の戻り値を問題なく計算することができますが、私はValue.1の列を使用してそれを行います。私は計算のためにValue.1からValue.2を差し引いて、次の期間の計算のためにValue.1をValue.1に戻しながら、期間リターンを計算する方法を確信できませんでした。

N.B.表は私が解決しようとしている値を示しています。

すべての援助は歓迎です、ありがとう!

答えて

1

データ

df <- data.frame("Date" = c("1/1/2017","1/2/2017","1/3/2017","1/4/2017","1/5/2017","1/6/2017"), 
       "Value.1" = c(100,105,103,101,99,115), "Value.2" = c(NA,NA,NA,NA,10,NA)) 

これは

df$percent.change <- c(NA, ((df[2:nrow(df), "Value.1"] - 
         ifelse(is.na(df[2 : nrow(df), "Value.2"]), 
           0, df[2:nrow(df), "Value.2"])) 
         - df[1:(nrow(df) - 1), "Value.1"])/df[1:(nrow(df)-1),"Value.1"]) 
+0

IT-これはわずかに短縮することができない必要があります: '変換(DF、frac_chg = C(NA、(差分(Value.1) - ifelse (is.na(Value.2 [-1])、0、Value.2 [-1]))/ head(Value.1、-1))) ' –

+0

あなたのおかげで両方! – tommygun

関連する問題