首页 > 解决方案 > 如何使用 R 中的 inner_join、dplyr 将两个数据帧连接到 2 列,这些列应该同时匹配?

问题描述

  1. 目标是按ID年份inner_join匹配 2 个长数据帧,并在 R中使用
>data_1

ID    year    fee    health
1      0      100      1
1      1       50      2
2      0       50      2
2      1       80      3     
・
・
・
>data_2

ID    year    religion 
1      0        5
1      1        8
2      0        3
2      1        2     
・
・
・

目标是这样的

>data_join

ID    year    fee    health    religion
1      0      100      1          5
1      1       50      2          8
2      0       50      2          3
2      1       80      3          2 
・
・
・

我查看了页面https://dplyr.tidyverse.org/reference/join.html并尝试运行下面的代码,但它们无法匹配。

data_join <- inner_join(data_1, data_2, by = ID & year )

我怎么解决这个问题?谢谢你。

标签: rdplyrinner-join

解决方案


您只缺少要用于连接的变量中的名称向量。这应该做。

data_join <- inner_join(Data_1, Data_2, by = c("ID" , "year") )

### Here is your example ###
    Data_1<-matrix(c(1,0,100,1,1,1,50,2,2,0,50,2,2,1,80,3), ncol=4,byrow = T)
    Data_2<-matrix(c(1,0,5,1,1,8,2,0,3,2,1,2), ncol=3,byrow = T)

    Data_1<-as.data.frame(Data_1)
    Data_2<-as.data.frame(Data_2)

    names(Data_1)<-c("ID","Year","Fee","Health")
    names(Data_2)<-c("ID","Year","Religion")

    data_join <- inner_join(Data_1, Data_2, by = c("ID" , "Year") )

推荐阅读