-9

我需要通过匹配每个数据框的两个站点列来组合两个数据框(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
4

2 回答 2

4

你想要这个merge功能。由于您要匹配的列名已经具有相同的名称,您甚至不需要做任何特别的事情。如果不是这种情况,您需要查看合并所采用的by.xby.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)
于 2012-08-25T15:03:15.110 回答
0

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)
于 2019-12-02T17:13:32.433 回答