在R中使用openxlsx合并多标签Excel数据框并添加来源日期列
解决多工作表数据框合并及添加来源日期列的方法
首先建议你把所有工作表的数据统一存到一个列表里,比直接散在全局环境里更易处理:
library(openxlsx) # 加载目标Excel工作簿 wb <- loadWorkbook("你的Excel文件路径.xlsx") # 获取所有工作表的日期名称 sheet_dates <- getSheetNames("你的Excel文件路径.xlsx") # 批量读取所有工作表到列表,每个元素对应一个数据框 df_list <- lapply(sheet_dates, function(date) read.xlsx(wb, sheet = date)) # 给列表元素命名为对应的日期,方便后续关联来源 names(df_list) <- sheet_dates
同时解决两个问题:合并数据集 + 添加来源日期列
推荐两种实用方法,按需选择即可:
方法一:用dplyr包(代码简洁,适配变量数差异)
library(dplyr) # bind_rows自动合并所有数据框,.id参数生成记录来源的列,值为对应工作表的日期名称 combined_data <- bind_rows(df_list, .id = "source_date")
如果不同工作表的变量数(6-9个)不一致,bind_rows会自动给缺失的变量填充NA,完美适配你的场景。
方法二:用Base R实现(无需额外安装包)
# 先给每个数据框添加source_date列,值为对应的原始工作表日期 df_list_with_date <- lapply(names(df_list), function(date) { temp_df <- df_list[[date]] temp_df$source_date <- date temp_df }) # 合并所有带日期列的数据框 combined_data <- do.call(rbind, df_list_with_date)
处理完成后,combined_data就是合并好的单个数据集,其中source_date列会记录每条数据对应的原始工作表日期名称。
内容的提问来源于stack exchange,提问作者Ask
相关产品推荐
相关产品推荐

