You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用指定列名映射的第三份DataFrame行合并两份DataFrame?

按指定列映射合并两个DataFrame的最简方法

你的需求是纵向行合并(不是匹配关联的join操作),核心思路是先根据df3的映射规则重命名df2的列,再直接拼接两个结构一致的DataFrame即可,完全不用逐个指定列名。

实现代码

library(dplyr)

# 原始数据
df1 <- data.frame(letter = c("A", "B", "C"),
                  number = c(3, 2, 1),
                  rating = c(32, 89, 23))
df2 <- data.frame(lttr = c("D", "E", "F"),
                  mark = c(67, 32, 90),
                  nmbr = c(4, 5, 6))
df3 <- data.frame(df1 = c("letter", "number", "rating"),
                  df2 = c("lttr", "nmbr", "mark"))

# 批量重命名df2的列,对齐df1的列名
colnames(df2) <- df3$df1[match(colnames(df2), df3$df2)]

# 纵向合并两个结构一致的DataFrame
df4 <- bind_rows(df1, df2)

# 查看结果
df4

代码解释

  • match(colnames(df2), df3$df2)会自动匹配df2每一列在df3$df2中的位置,再通过该位置提取df3$df1的对应列名,实现批量重命名,哪怕有50列也能自动处理。
  • bind_rows()会按列名自动匹配并拼接行,完全符合你预期的结果结构。

验证结果

运行后得到的df4与预期一致:

> df4
  letter number rating
1      A      3     32
2      B      2     89
3      C      1     23
4      D      4     67
5      E      5     32
6      F      6     90

内容的提问来源于stack exchange,提问作者Lieke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:37:47