为什么结果在`inner_join`之后包含不完整的变量?

时间:2017-03-13 05:11:11

标签: r

我试图使用inner_join合并两个data.frames。我遇到的问题是合并结果只包含其中一个data.frames中的变量。

我希望看到两个数据框合并的方式可以删除不匹配的观察结果,并且仍然包含这两个数据中的变量。在我的案例中,两个数据框的名称为cpdsgtd

我很确定我有两个唯一标识符(在我的情况下,state& year),这两个变量名在这两个数据框中是相同的。虽然结果确实降低了所有无与伦比的观察结果;但是,它只包含其中一个数据框中的变量。

这是我的代码:

library(dplyr)
terdemo <- inner_join(cpds,gtd)

然后 R 会回复以下消息,包括警告消息。

Joining, by = c("country", "year")

Warning message:
In inner_join_impl(x, y, by$x, by$y, suffix$x, suffix$y) :
joining character vector and factor, coercing into character vector

有人可以解释为什么会触发此警告消息吗?

注意:我使用的是RStudio版本1.0.136和mac OS Sierra版本10.12.3。相关包是dplyr

2 个答案:

答案 0 :(得分:1)

您应该始终明确地联接指定连接的by参数,即

terdemo <- inner_join(cpds, gtd, by=c("state" = "state", "year" = "year"))

但是,这与您当前的观察结果无关。 inner_join()的行为是,对于要连接的两个数据帧中的每对连接列,只有一个出现在输出中。如果您感知列被删除,最可能的解释是结果数据框中已从一个数据帧中删除了一个或两个连接列。

答案 1 :(得分:0)

我找到了问题的答案。命令inner_join完全没有问题,我找不到某些变量的原因是合并后有太多(> 75)变量,所以当我使用{{{}时,有些变量无法显示1}}。您可以使用View()name()检查合并后的所有变量。希望这有帮助。