A:如何按列名合并数据框


您可以使用以下方法在 R 中按列名称合并数据框:

方法一:根据匹配的列名进行合并

 merge(df1, df2, by=' var1 ')

方法二:根据不匹配的列名进行合并

 merge(df1, df2, by. x = ' var1 ', by. y = ' variable1 ')

方法三:根据多个匹配的列名进行合并

 merge(df1, df2, by=c(' var1 ', ' var2 '))

方法四:根据多个不匹配的列名进行合并

 merge(df1, df2, by. x =c(' var1 ', ' var2 '), by. y =c(' variable1 ', ' variable2 '))

以下示例展示了如何在实践中使用每种方法。

示例 1:根据匹配的列名进行合并

以下代码显示了如何根据匹配的列名称合并 R 中的两个数据框:

 #define data frames
df1 <- data. frame (team=c('A', 'B', 'C', 'D'),
                  dots=c(88, 98, 104, 100))

df2 <- data. frame (team=c('A', 'B', 'C', 'D'),
                  rebounds=c(22, 31, 29, 20))

#merge based on one column with matching name
merge(df1, df2, by=' team ')

  team points rebounds
1 A 88 22
2 B 98 31
3 C 104 29
4 D 100 20

结果是使用团队列与每个数据框中的行相匹配的数据框。

示例 2:根据不匹配的列名进行合并

以下代码显示了如何根据不匹配的列名称合并 R 中的两个数据框:

 #define data frames
df1 <- data. frame (team=c('A', 'B', 'C', 'D'),
                  dots=c(88, 98, 104, 100))

df2 <- data. frame (team_name=c('A', 'B', 'C', 'D'),
                  rebounds=c(22, 31, 29, 20))

#merge based on one column with unmatched name
merge(df1, df2, by. x = ' team ', by. y = ' team_name ')

  team points rebounds
1 A 88 22
2 B 98 31
3 C 104 29
4 D 100 20

结果是一个数据框,该数据框使用第一个数据框中的team列和第二个数据框中的team_name列来匹配行。

示例3:根据多个匹配的列名进行合并

以下代码展示了如何在 R 中根据多个匹配的列名称合并两个数据框:

 #define data frames
df1 <- data. frame (team=c('A', 'A', 'B', 'B'),
                  position=c('G', 'F', 'G', 'F'),
                  dots=c(88, 98, 104, 100))

df2 <- data. frame (team=c('A', 'A', 'B', 'B'),
                  position=c('G', 'F', 'G', 'F'),
                  rebounds=c(22, 31, 29, 20))

#merge based on multiple columns with matching names
merge(df1, df2, by=c(' team ', ' position '))

  team position points rebounds
1 AF 98 31
2 AG 88 22
3 BF 100 20
4 BG 104 29

结果是一个数据框,该数据框使用每个数据框中的团队位置列来匹配每个数据框中的行。

示例 4:根据多个不匹配的列名进行合并

以下代码展示了如何在 R 中根据多个不匹配的列名称合并两个数据框:

 #define data frames
df1 <- data. frame (team=c('A', 'A', 'B', 'B'),
                  position=c('G', 'F', 'G', 'F'),
                  dots=c(88, 98, 104, 100))

df2 <- data. frame (team_name=c('A', 'A', 'B', 'B'),
                  position_name=c('G', 'F', 'G', 'F'),
                  rebounds=c(22, 31, 29, 20))

#merge based on multiple columns with matching names
merge(df1, df2, by. x =c(' team ', ' position '), by. y =c(' team_name ', ' position_name '))

  team position points rebounds
1 AF 98 31
2 AG 88 22
3 BF 100 20
4 BG 104 29

结果是一个数据框,该数据框使用第一个数据框中的teamposition列以及第二个数据框中的team_nameposition_name列来匹配行。

其他资源

以下教程解释了如何在 R 中执行其他常见数据框函数:

如何在 R 中进行左连接
如何在 R 中进行内连接
如何在 R 中进行 VLOOKUP
如何在R中向数据框添加行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注