如何在R中用dplyr的inner_join按两列同时匹配合并数据框?
解决R中inner_join按多列匹配合并数据框的问题
问题出在你给inner_join()的by参数写法上啦!dplyr的连接函数里,by参数需要接收的是字符向量,用来指定要匹配的列名,而不是用&直接连接变量名,这就是你合并失败的原因。
正确的合并代码
library(dplyr) data_join <- inner_join(data_1, data_2, by = c("ID", "year"))
代码解释
- 因为你的两个数据框中,用于匹配的列名完全一致(都是
ID和year),所以直接将这两个列名以字符向量的形式传给by参数即可。 - 如果两个数据框的匹配列名不一致(比如
data_2里对应列是user_id和year),可以用键值对的形式指定对应关系:
左边是data_join <- inner_join(data_1, data_2, by = c("ID" = "user_id", "year" = "year"))data_1的列名,右边是data_2的列名。
运行这段正确代码后,就能得到你预期的合并结果:所有ID和year同时匹配的行都会被保留,并且合并两表的其他列(fee、health和religion)。
内容的提问来源于stack exchange,提问作者R_biginner
相关产品推荐
相关产品推荐

