1
データプロバイダの四半期データには、四半期ごとのデータ値が実際には年初来の数値であるという問題があります。つまり、値はすべての前四半期の合計です(Q2 = Q1 + Q2、Q3 = Q1 + Q2 + Q3、...)。 元のデータの構造は、以下になります。私はそれゆえQ2、Q3及びQ4から前期を減算する必要四半期値を計算するためにdata.tableを使用して四半期ごとのデータに変換します。
library(data.table)
library(plyr)
dt.quarter.test <- structure(list(Year = c(2000L, 2000L, 2000L, 2000L, 2001L, 2001L, 2001L, 2001L)
, Quarter = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L)
, Data.Year.to.Date = c(162, 405, 610, 938, 331, 1467, 1981, 2501))
, .Names = c("Year", "Quarter", "Data.Year.to.Date"), class = c("data.table", "data.frame"), row.names = c(NA, -8L))
。 plyr
パッケージのddply
機能を使用して、目的の結果を得ることができました。
dt.quarter.result <- ddply(dt.quarter.test, "Year"
, transform
, Data.Quarterly = Data.Year.to.Date - shift(Data.Year.to.Date, n = 1L, type = "lag", fill = 0))
dt.quarter.result
Year Quarter Data.Year.to.Date Data.Quarterly
1 2000 1 162 162
2 2000 2 405 243
3 2000 3 610 205
4 2000 4 938 328
5 2001 1 331 331
6 2001 2 1467 1136
7 2001 3 1981 514
8 2001 4 2501 520
しかし、それは非常に不器用なようだと、私はそれを改善し、特にdata.table内で直接それを行う方法についてのいくつかの入力を取得したいと思いますので、私は、コマンドを使用して、本当に満足していません。ここで
おかげで、。シフト()関数を初めて使用したのですか?利用可能なオプションに慣れてきたときは、いつも驚くべきことに、ソリューションがどれほど簡単であるかがわかります。 – hannes101