我有一个大数据表X
(504x9)和一个较小的数据框bzShare
(323X4),其中包含top.sector
和sizeClass
列。现在,我想将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)数据帧?
答案 0 :(得分:2)
仅仅因为两个data.frames
或矩阵共享相同的列名称并不意味着它们将很好地加入/合并,因为它们之间可能没有任何公共密钥,这将是典型的结果在一个内部JOIN案例中,就像你描述的那样。
同时检查您的bzShare
对象是否为空,但它具有有效的列名称(即我错过了dim(bzShare)
的结果)
开始于:
count(X$top.sector %in% bzShare$top.sector)
count(X$sizeClass %in% bzShare$sizeClass)
看看你是否在每个集合交叉点得到了什么。