r中数据帧之间的二乘二匹配
我需要通过匹配每个数据帧的两个站点列来组合两个数据帧df1和df2,以生成第三个数据帧df3r中数据帧之间的二乘二匹配,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 = 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。