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

如何合并多个长度不同的R语言DataFrame?

如何合并三个长度不同的DataFrame?

原始数据

df <- data.frame(  
  retail_seling_price=c(10),
  quantity_10=c(1000)
)

df1 <- data.frame(  
  retail_seling_price=c(100,200,300),
  quantity_18=c(1000,2000,3000)
)

df2 <- data.frame(  
  retail_seling_price=c(100,200,300,400),
  quantity_18=c(1000,2000,3000,0)
)

需求说明

需要将上述三个DataFrame合并为一个,目标结果包含retail_seling_price、quantity_10、quantity_18、quantity_18_2列,所有唯一的retail_seling_price值都作为行,对应列无匹配数据时填充为NA。

解决方案

方法一:使用dplyr包的全连接

先给df2的quantity_18列重命名避免冲突,再通过full_join依次合并:

library(dplyr)

# 重命名df2的数量列
df2_renamed <- df2 %>% rename(quantity_18_2 = quantity_18)

# 执行合并
merged_df <- df %>% 
  full_join(df1, by = "retail_seling_price") %>% 
  full_join(df2_renamed, by = "retail_seling_price")

# 查看合并结果
print(merged_df)

方法二:使用base R的merge函数

同样先重命名df2的列,再通过多次merge实现全连接:

# 重命名df2的第二列
names(df2)[2] <- "quantity_18_2"

# 逐层合并,all=TRUE保留所有行
merged_df <- merge(merge(df, df1, by = "retail_seling_price", all = TRUE), 
                   df2, by = "retail_seling_price", all = TRUE)

# 查看结果
print(merged_df)

两种方法最终得到的合并结果都会匹配目标样式,无数据的位置自动填充NA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:40:26