利用R语言合并数据框的行与列

何川
何川
发布时间:2026-10-16| 4人浏览过
原创

在数据分析与处理中,经常需要将多个数据集整合在一起。在 R 语言中,我们可以使用 rbind() 和 cbind() 按位置进行简单的行列拼接,也可以使用 merge() 函数根据共同字段(如 ID)智能合并数据框,甚至处理缺失值。

rbind() 与 cbind() 函数详解

rbind()(按行合并)和 cbind()(按列合并)是基础的数据结构组合函数,适用于向量、矩阵和数据框。它们要求参与合并的对象具有相应的兼容维度:按行合并时行数需一致或自动对齐,按列合并时长度的倍数关系决定了填充方式。

第1步:按行合并 (rbind)

目的:将数据垂直堆叠,增加数据框的样本量。
操作:使用 rbind() 将多个包含相同变量的行组合在一起。

# 示例:按行合并两个向量
rbind(c(1,2,3), c(4,5,6))
# 结果输出:
#      [,1] [,2] [,3]
# [1,]    1    2    3
# [2,]    4    5    6

第2步:按列合并 (cbind)

目的:将特征横向扩展,增加数据框的维度(变量数)。
注意:若长度不完全相等,R 会尝试循环补齐,可能导致数据错位。

# 示例:按列合并向量
cbind(c(1,2,3), c(4,5,6))
# 结果输出:
#      [,1] [,2]
# [1,]    1    4
# [2,]    2    5
# [3,]    3    6

# 示例:向现有矩阵添加新列
a <- matrix(c(1,2,3,4,5,6), nrow=2)
cbind(a, c(5,7))
# 结果输出:
#      [,1] [,2] [,3] [,4]
# [1,]    1    3    5    5
# [2,]    2    4    6    7

merge() 函数与关键值匹配

当需要依据特定标识符(如姓名、ID)关联不同来源的数据时,merge() 函数比位置合并更可靠。它默认执行内连接(Inner Join),仅保留双方都存在的记录。

第1步:基于共同键合并数据

入口:数据框中包含相同的列名作为连接基准。
动作:调用 merge(x, y),R 会自动寻找两表中共同的列名进行匹配。

# 创建数学成绩表
math <- data.frame(name=c("迪迦","泰罗","赛文"), math=c(76,84,64))
# 创建英语成绩表(注意姓名顺序不同)
english <- data.frame(name=c("泰罗","赛文","迪迦"), english=c(95,59,42))

# 执行合并
result <- merge(math, english)
print(result)
# 结果:
#   name math english
# 1 迪迦   76      42
# 2 赛文   64      59
# 3 泰罗   84      95

上述结果表明 merge() 成功通过 name 列建立了关联。作为对比,若使用 cbind(),则会无视内容直接按顺序并排,导致数据逻辑错乱:

# 错误示例:直接使用cbind会导致名字对不上
(d <- cbind(math, english))
#     name math name english
# 1 迪迦   76 泰罗      95
# ...

第2步:使用 all 参数保留完整记录

目的:在进行全外连接(Full Outer Join)时,确保只出现在一方数据集中的记录不被丢弃。
操作:设置参数 all = TRUE。若某方无对应数据,则填充为 NA。

# 创建一个包含额外成员的数据表
english2 <- data.frame(name=c("艾斯","赛文","迪迦"), english=c(95,59,42))

# 默认合并(丢失了没有数学成绩的艾斯,也没有数学记录的泰罗)
merge(math, english2)
#    name math english
# 1 迪迦   76      42
# 2 赛文   64      59

# 开启全连接:all = TRUE
# 此时泰罗显示有数学分无英语分,艾斯显示有英语分无数学分
result_all <- merge(math, english2, all = TRUE)
print(result_all)
#   name math english
# 1 艾斯   NA      95
# 2 迪迦   76      42
# 3 赛文   64      59
# 4 泰罗   84      NA

以上就是R语言合并数据框详细方法的介绍,更多关于R数据处理进阶技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。