plyr R空内连接

时间:2012-04-24 09:21:04

标签: r join gnu plyr

我有一个大数据表X(504x9)和一个较小的数据框bzShare(323X4),其中包含top.sectorsizeClass列。现在,我想将bzShare的值加入X,以便X的维度为(504x10)。如果我是正确的,内连接仅选择x和y中具有匹配键的行,但我总是得到零行: - (

> dim(X)
[1] 504   9
> names(X)
[1] "sizeClass" "top.sector"    "year" "period" "somevar"
[6] "sumTest"   "sumTestTotal"  "AN"   "share"                    
> names(bzShare)
[1] "top.sector" "sizeClass"  "bzShare"   
> join(X,bzShare,type="inner",by=c("top.sector","sizeClass"))
NULL data table

为什么没有得到这个(504x10)数据帧?

1 个答案:

答案 0 :(得分:2)

仅仅因为两个data.frames或矩阵共享相同的列名称并不意味着它们将很好地加入/合并,因为它们之间可能没有任何公共密钥,这将是典型的结果在一个内部JOIN案例中,就像你描述的那样。

同时检查您的bzShare对象是否为空,但它具有有效的列名称(即我错过了dim(bzShare)的结果)

开始于:

count(X$top.sector %in% bzShare$top.sector)
count(X$sizeClass %in% bzShare$sizeClass)

看看你是否在每个集合交叉点得到了什么。