2017-06-14 4 views
0

を変異:はdplyrで株式・ローリング複数の初期値を設定する::このデータセットを皮切り

df <- data.frame(
    year = 2007, 
    month = c('Jan', 'Feb', 'Mar', 'April'), 
    percent_change = c(0.0314, 0.0073, 0.0135, -0.0144), 
    to_multiply = c(1.0314, 1.0073, 1.0135, .9856) 
) 

私は、次のデータセットを作成したいと思います。

year month percent_change to_multiply dollar_value 
2007 Jan   0.0314  1.0314  103.1400 
2007 Feb   0.0073  1.0073  103.8929 
2007 Mar   0.0135  1.0135  105.2955 
2007 April  -0.0144  0.9856  103.7792 

初期値をプログラムで割り当てる方法と、毎月の後に在庫の値を表示する新しい列を作成する方法が不思議です。これはスプレッドシートで簡単に行うことができますが、私はそれを避けたいので、同じ開始時の初期値を使用して異なる開始日や割り当てを迅速にグラフ化できます。

私はラグラッパーで突然変異を試みましたが、動作させることができませんでした。私はRCCPRollを見ましたが、その作業を行うこともできませんでした。

+0

画像と【再現例](https://stackoverflow.com/questions/5963269/how-to-make-a-を含めてください偉大なr - 再現可能な例);私たちはあなたがここに置いたものであなたを助けることはできません。 – RobertMc

+0

btwの場合は、画像を直接質問に貼り付けることができます。 – geneorama

+2

イメージファイルを削除し、再現可能な例に置き換えました。私はこれにアプローチする方法に固執しているので、コードの試行は含まれていませんでした。私はS/O質問プロトコルに従わないことをお詫びします。 – AaronT86

答えて

1

cumprodですが、data.tableを使用することをお勧めしますか?実際

dt <- data.table(year = 2007, 
       month = c('Jan', 'Feb', 'Mar', 'April'), 
       percent_change = c(0.0314, 0.0073, 0.0135, -0.0144), 
       to_multiply = c(1.0314, 1.0073, 1.0135, .9856)) 
dt[ , newvalue := cumprod(to_multiply) * 100] 
dt 
# year month percent_change to_multiply newvalue 
# 1: 2007 Jan   0.0314  1.0314 103.1400 
# 2: 2007 Feb   0.0073  1.0073 103.8929 
# 3: 2007 Mar   0.0135  1.0135 105.2955 
# 4: 2007 April  -0.0144  0.9856 103.7792 

、短いバージョン:

dt <- data.table(year = 2007, 
       month = c('Jan', 'Feb', 'Mar', 'April'), 
       percent_change = c(0.0314, 0.0073, 0.0135, -0.0144)) 
dt[ , newvalue := 100 * cumprod(1 + percent_change)] 
dt 
# year month percent_change newvalue 
# 1: 2007 Jan   0.0314 103.1400 
# 2: 2007 Feb   0.0073 103.8929 
# 3: 2007 Mar   0.0135 105.2955 
# 4: 2007 April  -0.0144 103.7792 
関連する問題