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

R语言合并具有相同列名的两个dataframe的实现方法

R语言纵向合并两个列不完全一致的数据框

你需要实现的是按行拼接两个数据框,保持df_1在前、df_2在后的顺序,df_2缺失的Age列自动填充NA,以下是两种可直接运行的实现方案:


构造测试样例数据

先运行以下代码复现你提到的两个测试数据框,方便后续验证结果:

# 构造df_1
df_1 <- data.frame(
  ID = c(1, 2),
  Name = c("Jaz", "Sam"),
  Age = c(25, 28),
  City = c("D", "E")
)

# 构造df_2
df_2 <- data.frame(
  ID = c(4, 5),
  Name = c("Alex", "Abi"),
  City = c("F", "E")
)

方案1:基础R实现(无第三方包依赖)

基础R自带的rbind()要求两个拼接对象列名、列数完全一致,只需要先给df_2补上缺失的Age列、赋值为NA,调整列顺序和df_1一致后直接拼接即可:

# 给df_2补充缺失列
df_2$Age <- NA
# 按指定列顺序拼接,保证df_1在前
merged_df <- rbind(df_1, df_2[, c("ID", "Name", "Age", "City")])

方案2:dplyr实现(代码更简洁,自动对齐列)

如果日常使用tidyverse生态的工具,直接调用dplyr::bind_rows()即可,函数会自动匹配两个数据框的同名列,缺失列自动填充NA,不需要手动补列:

# 未安装dplyr先运行下一行:install.packages("dplyr")
library(dplyr)
merged_df <- bind_rows(df_1, df_2)

结果验证

运行print(merged_df)即可得到符合要求的4行结果:

ID Name Age City
1  1  Jaz  25    D
2  2  Sam  28    E
3  4 Alex  NA    F
4  5  Abi  NA    E

说明:bind_rows()默认按照传入数据框的顺序保留行顺序,列顺序优先取第一个传入数据框的列顺序,和要求的输出规则完全匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 13:06:08