R语言合并Excel多工作表数据并新增因子标记变量问题咨询
R语言实现方案
方案1:已完成合并的情况下直接赋值
如果你的三个原始数据集顺序与rbind时的拼接顺序完全一致,可直接按各数据集的行数生成因子列:
# 假设三个原始数据集名为df1、df2、df3,合并后的数据框名为merged_df # 此前rbind的拼接顺序为 rbind(df1, df2, df3) merged_df$source <- factor( rep(c("工作表1名称", "工作表2名称", "工作表3名称"), c(nrow(df1), nrow(df2), nrow(df3))) )
注意:rep中的工作表顺序必须和你之前rbind拼接数据集的顺序完全匹配,否则会出现来源对应错误
方案2:合并前添加来源列(更稳妥,推荐)
合并前先给每个单独的数据集加上来源标识,再拼接,完全避免顺序匹配错误的问题:
# 给每个原始数据集添加因子类型的来源列 df1$source <- factor("工作表1名称") df2$source <- factor("工作表2名称") df3$source <- factor("工作表3名称") # 重新合并得到带来源标识的数据集 merged_df <- rbind(df1, df2, df3)
拓展方案:批量导入+自动加来源列
如果后续还要处理类似多工作表的Excel文件,可以直接用批量导入的方式一步完成,不需要单独读取三个工作表再拼接:
library(readxl) library(purrr) library(dplyr) # 读取Excel内所有工作表名称 sheet_names <- excel_sheets("你的Excel文件路径.xlsx") # 批量导入所有工作表,同时自动添加以工作表名为水平的来源因子列 merged_df <- map_dfr(sheet_names, ~ read_excel("你的Excel文件路径.xlsx", sheet = .x) %>% mutate(source = factor(.x)))
内容的提问来源于stack exchange,提问作者Lixae
相关产品推荐
相关产品推荐

