2016-03-23 16 views
0

の値として0を計算私はDFのデータフレームを作った:次のようにパーセンテージNAとRの変化又はR

Name  values percertage_change 
N1  2.000       
N1  2.075  0.0375 
N1  2.150  0.0361 
N1  2.225  0.0348 
N1  2.300  0.0337 
N2   NA   
N2   3   ? 
N2   4  0.333 
N2   0  1.000 
N2   3   ? 

の変化率を計算する式は次式で与えられる。

Percentage_change[i+1]=(values[i+1]-values[i])/value[i] 

値[i]がNAまたは0のとき、Rでどのように計算するのですか?

+0

定義上、NAレコードからパーセント変更を計算することは不可能です。あなたはどう思いますか?あなたはそれをNAに設定することもできますし、指定された値(たとえば、ゼロと言う)に設定することも、最後の既存レコードをベースとして使用することもできます。 – PavoDive

答えて

1
install.packages("zoo") 
library(zoo) 

df <- zoo(df) 
df$percentage_change <- df$values/lag(df$values, -1, na.pad = TRUE) - 1 

これはパッドNAとの最初の行をすべきであり、適切な場合、それはNAを返すべきです。

+0

は負の数で動作しますが、最初に定義する必要がありますか? – user3841581

+0

負の数でも動作します。しかし、私の意見では、負の数量でパーセンテージの変更を表現することはせいぜい薄れており、悪化した意思決定につながる可能性があります。 – JasonAizkalns

+0

しかし、1から-1の値を持つことができます。 0も考慮に入れていますか?たとえば、0から3までの値を持つことができます。データセットの完全な性質がわからないため、これらはすべて可能です。しかし、これらの2つのシナリオは可能です – user3841581

関連する問題