现在位置: 首页 > R 教程 > 正文

R merge() 函数 - 合并数据框

R 语言实例 R 语言实例

R merge() 函数用于按共同列将两个数据框合并在一起。

merge() 类似于 SQL 中的 JOIN 操作,支持内连接、左连接、右连接和全连接。

merge() 函数语法格式如下:

merge(x, y, by, by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all)

参数说明:

  • x, y 要合并的两个数据框。

  • by 连接键(共同列名)。

  • all.x 是否保留 x 中的所有行(左连接)。

  • all.y 是否保留 y 中的所有行(右连接)。

  • all 是否保留所有行(全连接)。

实例

# 学生基础信息表
students <- data.frame(
  学号 = c("S001", "S002", "S003", "S004"),
  姓名 = c("张三", "李四", "王五", "赵六"),
  stringsAsFactors = FALSE
)

# 成绩表
scores <- data.frame(
  学号 = c("S001", "S002", "S003", "S005"),
  成绩 = c(88, 92, 76, 80),
  stringsAsFactors = FALSE
)

print("学生表:")
print(students)
print("成绩表:")
print(scores)

# 内连接(只保留两张表都有的学生)
inner_join <- merge(students, scores, by = "学号")
print("内连接:")
print(inner_join)

# 左连接(保留所有学生,没有成绩的填 NA)
left_join <- merge(students, scores, by = "学号", all.x = TRUE)
print("左连接:")
print(left_join)

执行以上代码输出结果为:

[1] "学生表:"
  学号 姓名
1 S001 张三
2 S002 李四
3 S003 王五
4 S004 赵六
[1] "成绩表:"
  学号 成绩
1 S001   88
2 S002   92
3 S003   76
4 S005   80
[1] "内连接:"
  学号 姓名 成绩
1 S001 张三   88
2 S002 李四   92
3 S003 王五   76
[1] "左连接:"
  学号 姓名 成绩
1 S001 张三   88
2 S002 李四   92
3 S003 王五   76
4 S004 赵六   NA

R 语言实例 R 语言实例