R merge() 函数 - 合并数据框
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)
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 语言实例