大規模なデータセット (つまり 50 mil + obs) を使用して R でパネル データを操作するために人々が使用するものを確認したいと思います。このdata.table
パッケージは、キーがあり、非常に高速であるという点で便利です。このxts
パッケージは、あらゆる種類の時系列処理を行うための機能を備えているため便利です。したがって、次の 2 つの適切なオプションがあるようです。
data.table
その上で動作するカスタム時系列関数を作成しますxts
オブジェクトのリストを持ち、lapply
何かをしたいときはいつでもそのリストで実行します。data.frame
最終的には、回帰などを行うためにこれを にマージする必要があります。
このパッケージは知っていplm
ますが、上記の 2 つのオプションほどデータ管理に役立つとは思いませんでした。皆さんは何を使っていますか?いつ何が最も効果的かについてのアイデアはありますか?
シナリオを提案してみましょう。N>>0 かつ T>>0 である T 期間の N 社を想像してください。data.table
各企業を 1 期間遅らせたい場合、超高速になります。たとえば、次のようになります。
x <- data.table(id=1:10, dte=rep(seq(from=as.Date("2012-01-01"), to=as.Date("2012-01-10"), by="day"), each=10), val=1:100, key=c("id", "dte"))
x[,lag_val:=c(NA, head(val, -1)),by=id]
これを行う別の方法は次のとおりです。
y <- lapply(ids, function(i) {xts(x[id==i, val], order.by=x[id == i, dte])})
y <- lapply(y, function(obj) { cbind(obj, lag(obj, 1)) })
前者の利点は、ビッグデータでの速度です。後者の利点は、 のようなことを実行したりperiod.apply
、 の他の機能を使用したりできることですxts
。xts
表現を速くするコツはありますか? たぶん、2つの組み合わせですか?オブジェクトとの間の変換にxts
はコストがかかるようです。