1
(終了/開始)^(1 /年数)-1として定義されたCAGR値を計算しようとしています。IDで複合返品を計算するR
私は、 "Stock"、 "date"、 "Annual.Growth.Rate"という列を持つdfを持っています。すぐにメモするには:私はラグ関数を使ってこれをしようとしていましたが、各株式の冒頭で再帰式を変更することはできませんでした。
structure(list(Stock = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L), .Label = c("A", "B"), class = "factor"),
date = structure(c(6L, 2L, 3L, 4L, 5L, 1L, 12L, 8L, 9L, 10L,
11L, 7L), .Label = c("3/28/16", "3/29/12", "3/29/13", "3/29/14",
"3/29/15", "3/30/11", "6/28/16", "6/29/12", "6/29/13", "6/29/14",
"6/29/15", "6/30/11"), class = "factor"), Annual.Growth.Rate = c(0.1,
0.2, 0.1, 0.1, 0.1, 0.1, 0.3, 0.2, 0.14, 0.14, 0.14, 0.14
), Growth = c(110, 132, 145.2, 159.72, 175.692, 193.2612,
130, 156, 177.84, 202.7376, 231.120864, 263.477785), CAGR = c(0.098479605,
0.098479605, 0.098479605, 0.098479605, 0.098479605, 0.098479605,
0.125, 0.125, 0.125, 0.125, 0.125, 0.125)), .Names = c("Stock",
"date", "Annual.Growth.Rate", "Growth.on.100", "CAGR"), class = "data.frame", row.names = c(NA,
-12L))
これは期待される出力です。株式、日付、成長の前に)。 100での成長は、前からすべての "遅れ"ではありません。最初の利用可能日にはあるスターター(この場合は100、(1 + 0.1)* 100)が掛けられ、次の成長値は将来の値(110)*次の成長率です。私はdplyrを使用してCAGRを行う方法を理解することができますが、私は100で成長に本当に固執しています。