2

ffffbaseパッケージを使用して 2 つのffdfオブジェクトを結合していますが、mergeステートメントを使用すると、ターゲットのffdf100 万行から 800 万行になります。

ffdf1 は、100 万行 x 6 列です。

> 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 は、次のように ~2000 万行 X 3 列です。

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

次のコードを使用して、2 つをマージします。

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

結果は次のとおりです。

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

長さが 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、677840 個のユニークなuserid's が含まれています。そのため、1mm の行にいくつかの重複があります。

4

1 に答える 1

3

merge.ffdf にはバグが含まれており、現在、all.x=TRUE および all.y=FALSE ではなく、内部結合のみを正しく実行できます。関数は @ http://code.google.com/p/fffunctions/で動作します。問題は、一致するレコードがない場合、左外部結合を行うときに、NA を正しく許可するために vmodes を変更する必要があることです。これは現在取り組んでいます。

ご参考までに。これは現在、 http://code.google.com/p/fffunctions/の開発バージョンで解決されており、今後数週間で CRAN にアップロードされる予定です。

于 2012-05-16T14:32:34.937 に答える