10

私は R のffパッケージを使用しffdfており、作業する必要のあるオブジェクト (約 1.5M x 80 の寸法) をいくつか持っています。ただし、効率的なスライス/ダイシング操作について頭を悩ませています。

たとえば、「YEAR」と「AGE」という名前の 2 つの整数列があり、YEAR が 2005 の場合に AGE のテーブルを作成したいとします。

1 つのアプローチは次のとおりです。

ffwhich <- function(x, expr) {
  b <- bit(nrow(x))
  for(i in chunk(x)) b[i] <- eval(substitute(expr), x[i,])
  b
}
bw <- ffwhich(a.fdf, YEAR==1999)
answer <- table(a.fdf[bw, "AGE"])

table()操作は高速ですが、ビット ベクトルの構築は非常に遅くなります。これを改善するための推奨事項はありますか?

4

3 に答える 3

0

オブジェクトの操作に慣れていませんが、あなたが説明する問題は古典的なタスクffのように聞こえます:tapply()

answer <- tapply(a.fdf$YEAR[a.fdf$YEAR == 1995], a.fdf$AGE[a.fdf$YEAR == 1995], length)

上記の2段階の解決策よりもそのようなものが速く動くと思いますが、ffデータ構造がどのように機能するかを誤解している可能性がありますか?

于 2010-12-04T03:21:54.917 に答える