📅  最后修改于: 2023-12-03 15:07:27.757000             🧑  作者: Mango
在数据处理的过程中,我们经常需要将两个具有相同列名的数据框合并在一起。这时候,我们可以使用merge()
函数来实现。
merge()
函数的语法merge(x, y, by, by.x, by.y, all, all.x, all.y, sort)
参数解释:
x
:要合并的数据框1y
:要合并的数据框2by
:要合并的列名,可以是一个或多个列名。默认为所有公共列名。by.x
:x数据框中用于合并的列名,如果by
参数不指定,则默认使用所有公共列名。by.y
:y数据框中用于合并的列名,如果by
参数不指定,则默认使用所有公共列名。all
:是否使用外连接合并。默认为FALSE
,表示只使用内连接合并,即只保留两个数据框中都有的行。如果为TRUE
,则表示使用外连接合并,即保留所有行。all.x
:是否使用外连接合并x数据框。默认为FALSE
。all.y
:是否使用外连接合并y数据框。默认为FALSE
。sort
:是否排序。默认为TRUE
。我们以两个具有相同列名的数据框为例:
# 创建数据框df1
df1 <- data.frame(id = c(1, 2, 3, 4),
name = c("Alice", "Bob", "Cathy", "Dave"),
score1 = c(90, 85, 75, 80))
# 创建数据框df2
df2 <- data.frame(id = c(1, 2, 3, 5),
name = c("Alice", "Bob", "Cathy", "Emily"),
score2 = c(95, 90, 80, 85))
使用merge()
函数合并这两个数据框:
# 合并数据框
df <- merge(df1, df2, by = c("id", "name"))
# 查看结果
df
结果如下:
id name score1 score2
1 1 Alice 90 95
2 2 Bob 85 90
3 3 Cathy 75 80
我们可以看到,合并后只保留了两个数据框中都有的行,即id为1、2、3的行。如果要保留所有行,可以设置all = TRUE
:
df <- merge(df1, df2, by = c("id", "name"), all = TRUE)
# 查看结果
df
结果如下:
id name score1 score2
1 1 Alice 90 95
2 2 Bob 85 90
3 3 Cathy 75 80
4 4 Dave 80 NA
5 5 Emily NA 85
我们可以看到,合并后保留了所有行,用NA表示缺失值。如果要使用外连接合并x数据框或y数据框,可以设置all.x
或all.y
参数为TRUE
。