r中数据帧之间的二乘二匹配

r中数据帧之间的二乘二匹配,r,merge,dataframe,match,R,Merge,Dataframe,Match,我需要通过匹配每个数据帧的两个站点列来组合两个数据帧df1和df2,以生成第三个数据帧df3 df1 = data.frame(Site.1=c("A","A","B"), Site.2=c("B","C","C"), Score1=c(60,70,80)) df1 Site.1 Site.2 Score1 1 A B 60 2 A C 70 3 B

我需要通过匹配每个数据帧的两个站点列来组合两个数据帧df1和df2,以生成第三个数据帧df3

df1 = data.frame(Site.1=c("A","A","B"),
                 Site.2=c("B","C","C"),
                 Score1=c(60,70,80))
df1

 Site.1 Site.2 Score1
1      A      B     60
2      A      C     70
3      B      C     80

df2 = data.frame(Site.1=c("B","A","A"),
                 Site.2=c("C","B","C"),
                 Score2=c(10,20,30))
df2

  Site.1 Site.2 Score2
1      B      C     10
2      A      B     20
3      A      C     30

df3 = data.frame(Site.1=c("A","A","B"),
                 Site.2=c("B","C","C"),
                 Score1=c(60,70,80),
                 Score2=c(20,30,10))
df3

  Site.1 Site.2 Score1 Score2
1      A      B     60     20
2      A      C     70     30
3      B      C     80     10
您需要合并函数。因为您要匹配的列名已经具有相同的名称,所以您甚至不需要做任何特殊的操作。如果不是这样的话,您可能希望查看merge所使用的by.x和by.y参数

df1 = data.frame(Site.1=c("A","A","B"),Site.2=c("B","C","C"),Score1=c(60,70,80))
df2 = data.frame(Site.1=c("B","A","A"),Site.2=c("C","B","C"), Score2=c(10,20,30))
df3 = data.frame(Site.1=c("A","A","B"),Site.2=c("B","C","C"), Score1=c(60,70,80),Score2=c(20,30,10))
df3

# Merge gives you what you want
merge(df1, df2)
dplyr在这里可能会有所帮助

library(dplyr)   

df1 = data.frame(Site.1 = c("A", "A", "B"),
                 Site.2 = c("B", "C", "C"),
                 Score1 = c(60, 70, 80))


df2 = data.frame(Site.1 = c("B", "A", "A"),
                 Site.2 = c("C", "B", "C"),
                 Score2 = c(10, 20, 30))


inner_join(df1, df2)

关于合并data.frame,有很多类似的问题,所以…努力使用搜索引擎!!!您还可以指定带有数字的列,例如by=1:2。