求助:在R中合并行数不同的多个数据框的方法
解决数据框按指定列合并(行数不同时)的问题
问题原因
cbind()是按位置进行列绑定,要求两个数据框的行数必须完全一致。你的Book1有9行,Book2仅5行,行数不匹配导致报错。你实际需要的是按共同列Row Labels进行匹配合并,而非简单的位置绑定。
解决方案
以下两种方法均可实现按Row Labels匹配合并,缺失值自动填充为NA:
方法1:使用base R原生函数merge()
# 左连接:保留Book1的所有行,Book2无匹配的行填充NA merged_df <- merge(Book1, Book2, by = "Row Labels", all.x = TRUE) # 全连接:保留两个数据框的所有行,双方无匹配的位置均填充NA # merged_df <- merge(Book1, Book2, by = "Row Labels", all = TRUE)
方法2:使用tidyverse生态的dplyr包
先加载依赖包,再执行合并:
library(dplyr) # 左连接:保留Book1所有行 merged_df <- Book1 %>% left_join(Book2, by = "Row Labels") # 全连接:保留两个数据框所有行 # merged_df <- Book1 %>% # full_join(Book2, by = "Row Labels")
结果说明
运行上述代码后,merged_df会以Row Labels为匹配键,将两个数据框的列合并,Book2中没有对应日期的行,其X6-X9列会自动填充为NA,完全符合你的需求。
内容的提问来源于stack exchange,提问作者user20203146
相关产品推荐
相关产品推荐

