如何合并多个长度不同的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
相关产品推荐
相关产品推荐

