2012-05-13 15 views
2

を作成マージ私は2つのffdfオブジェクトを組み合わせることffffbaseパッケージを使用していますが、私はmergeステートメントを使用する場合は、ターゲットは1万行ffdf 800万行からなります。R FF/ffbase行

ffdf1は6列で100万行です:

userid  gender  age 
    1   1   3 
    2   1   2 
    3   2   5 
    4   0   4 
    5   2   3 
    ...  ...  ... 

私は2つをマージするには、次のコードを使用します:

> summary(ffdf2) 
       Length Class  Mode 
userid  1000000 ff_vector list 
V2   1000000 ff_vector list 
V3   1000000 ff_vector list 
V4   1000000 ff_vector list 
V5   1000000 ff_vector list 
V6   1000000 ff_vector list 

ffdf2は~20万行、このようなX 3列です

ffdf3 <- merge(ffdf1, ffdf2, by.x="userid",by.y="userid",all.x=T,sort=F) 

結果がこれです:

長さが1mmから8mmになる理由はありますか?

編集:私はこのしようとすると

ffdf3 <- merge(ffdf1, ffdf2, by.x="userid",by.y="userid",all.x=F,sort=F) 

を私が手に:またここに

> summary(ffdf3) 
         Length Class  Mode 
     userid  740383 ff_vector list 
     V2   740383 ff_vector list 
     V3   740383 ff_vector list 
     V4   740383 ff_vector list 
     V5   740383 ff_vector list 
     V6   740383 ff_vector list 
     gender  740383 ff_vector list 
     age   740383 ff_vector list 

はマージを実行しているから出力されます:

2012-05-13 14:49:06, x has 2 chunks, y has 8 chunks 
2012-05-13 14:49:06, working on x chunk 1:500000 
2012-05-13 14:49:07, working on y chunk 1:2958661 
2012-05-13 14:49:16, working on y chunk 2958662:5917322 
2012-05-13 14:49:32, working on y chunk 5917323:8875983 
2012-05-13 14:49:45, working on y chunk 8875984:11834644 
2012-05-13 14:49:57, working on y chunk 11834645:14793305 
2012-05-13 14:50:09, working on y chunk 14793306:17751966 
2012-05-13 14:50:20, working on y chunk 17751967:20710627 
2012-05-13 14:50:30, working on y chunk 20710628:23669283 
2012-05-13 14:50:40, working on x chunk 500001:1000000 
2012-05-13 14:50:41, working on y chunk 1:2958661 
2012-05-13 14:50:52, working on y chunk 2958662:5917322 
2012-05-13 14:51:03, working on y chunk 5917323:8875983 
2012-05-13 14:51:14, working on y chunk 8875984:11834644 
2012-05-13 14:51:24, working on y chunk 11834645:14793305 
2012-05-13 14:51:36, working on y chunk 14793306:17751966 
2012-05-13 14:51:47, working on y chunk 17751967:20710627 
2012-05-13 14:51:58, working on y chunk 20710628:23669283 

ffdf1 cont ains 677840ユニークuseridさん。だから1mmの行にいくつかの重複があります。

+0

@screenchOwl小さな再現可能な例を投稿すると、私たちがあなたを助けてくれるはずです。 –

答えて

3

merge.ffdfにはバグがあり、現在のところ、all.x = TRUEとall.y = FALSEではなく、正しく内部結合を行うことしかできません。この機能は@http://code.google.com/p/fffunctions/で機能します。問題は、一致するレコードがないときに、左外部結合を実行するとき、NAを正しく許可するためにvmodeを変更する必要があるということです。これは現在進行中です。

FYI。これは開発版のhttp://code.google.com/p/fffunctions/で解決され、今後数週間でCRANにアップロードされます。

+1

情報ありがとうございました。皆さんはff/ffbaseパッケージで素晴らしい仕事をしています。大規模なデータセットには非常に役立っています。 – screechOwl

+0

@jwijffelsは今このバグを修正しましたか? – Qbik

+0

もちろん、これは2012年6月4日のCRANのffbase 0.5で修正されました。 http://cran.r-project.org/web/packages/ffbase/NEWSを参照してください。 – jwijffels