R语言合并行列名不同数据框并按州拆分导出Excel的实现问题
R语言不同结构数据框按分组追加合并实现方案
因为df_1和df_2的列名、列数均不相同,无法直接执行rbind操作,需要先统一两个数据框的列结构,再按州分组完成追加:
- 对两个数据框补全对方独有的列,缺失值统一填充为NA,保证列数、列名完全一致
- 按州拆分df_1,给每个分组追加处理后的df_2,同时给新增的df_2行填充对应州名
- 合并所有分组得到最终的df_3
tidyverse 实现方案
library(dplyr) # 1. 对齐两个数据框的列结构 all_cols <- union(names(df_1), names(df_2)) df_1_align <- df_1 %>% mutate(across(setdiff(all_cols, names(df_1)), ~NA)) df_2_align <- df_2 %>% mutate(across(setdiff(all_cols, names(df_2)), ~NA)) # 2. 按州分组追加df_2 df_3 <- df_1_align %>% group_by(states) %>% group_modify(~ bind_rows(.x, df_2_align %>% mutate(states = .y$states))) %>% ungroup()
基础R 实现方案
# 1. 对齐两个数据框的列结构 all_cols <- union(names(df_1), names(df_2)) # 补全df_1列 df_1_align <- df_1 for (col in setdiff(all_cols, names(df_1))) { df_1_align[[col]] <- NA } # 补全df_2列 df_2_align <- df_2 for (col in setdiff(all_cols, names(df_2))) { df_2_align[[col]] <- NA } # 2. 按州拆分、追加、合并 df_1_split <- split(df_1_align, df_1_align$states) df_3_list <- lapply(names(df_1_split), function(state) { df_2_temp <- df_2_align df_2_temp$states <- state rbind(df_1_split[[state]], df_2_temp) }) df_3 <- do.call(rbind, df_3_list)
后续操作
得到的df_3可以直接使用你提供的导出代码,按州拆分导出为独立Excel文件。如果不需要保留df_2的原始列,可以在合并完成后用select(tidyverse)或列索引删除对应列即可。
内容的提问来源于stack exchange,提问作者Identicon
相关产品推荐
相关产品推荐

