0

R で大きなデータ セット (1 GB または 2 GB 以上) のタスクを計算する方法を学び、ffパッケージとffdfdply関数を使用しようとしています。(使用方法については、このリンクを参照してくださいffdfdply: R 言語: 「グループ化」または ff パッケージでの分割に関する問題)

私のデータには次の列があります:
"id" "birth_date" "diagnose" "date_diagnose"

「id」ごとにいくつかの行があり、診断があった最初の日付を抽出したいと考えています。

私はこれを適用します:

library(ffbase)
library(plyr)
load(file=file_name); # to load my ffdf database, called data.f . 

my_fun <- function(x){
                      ddply( x , .(id), summarize, 
                      age  = min(date_diagnose - birth_date, na.rm=TRUE)) 
          }
result  <- ffdfdply(x = data.f, split = data.f$id,
                    FUN = function(x) my_fun(x) , trace=TRUE) ; 
result[1:10,] # to check.... 

非常に奇妙ですが、このコマンド:ffdfdply(x = data.f, .... )は RStudio (および R) をクラッシュさせます。同じコマンドで R がクラッシュする場合とそうでない場合があります。たとえば、ffdfdply(最初に機能した) 行を再度トリガーすると、R がクラッシュします。

また、他の機能やデータなどを利用しても同様の効果があります。メモリの増加や log.txt への影響はありません。summaryBy "technique" を適用した場合と同じ動作....

したがって、誰かが同じ問題を抱えていて解決策を見つけた場合、それは非常に役立ちます. またffdfdply、非常に遅くなる (SAS よりも遅い...) ため、この種のタスクを作成する別の戦略を考えています。

ffdfdplyたとえば、データセットがID順に並べられていることを考慮していますか? (そのため、同じ ID を取得するためにすべてのデータを調べる必要はありません...)。

したがって、この問題に対する他のアプローチを知っている人がいればddply、「RAM メモリが少ない R の大きなデータセット」のすべてのユーザーにとって、それは本当に素晴らしいことです。

これは私のsessionInfo()

R version 2.15.2 (2012-10-26)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=Danish_Denmark.1252  LC_CTYPE=Danish_Denmark.1252   
[3] LC_MONETARY=Danish_Denmark.1252 LC_NUMERIC=C                   
[5] LC_TIME=Danish_Denmark.1252    

 attached base packages:
[1] tools     stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
[1] plyr_1.7.1   ffbase_0.6-1 ff_2.2-10    bit_1.1-9
4

1 に答える 1

2

最近CRANにアップロードしたパッケージを使っているときにも気づきました。これは、パッケージffbaseの「[.ff」および「[<-。ff」エクストラクタおよびセッタ関数がパッケージffからオーバーロードされていることが原因のようです。

この機能をパッケージから削除し、まもなくCRANにアップロードします。それまでの間、ffbaseのバージョン0.7を使用できます。これは、http://dl.dropbox.com/u/25690064/ffbase_0.7.ta​​r.gzから入手できます

次のようにインストールします。

download.file("http://dl.dropbox.com/u/25690064/ffbase_0.7.tar.gz", "ffbase_0.7.tar.gz")
shell("R CMD INSTALL ffbase_0.7.tar.gz")

それが役に立ったかどうか教えてください。

于 2012-11-19T14:48:47.187 に答える