You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中为合并后的DataFrame添加原Excel工作表名称列

解决方案

可以通过以下几种简洁的方式实现需求,核心是在合并过程中保留原工作表的名称信息:

方法一:利用map_dfr的.id参数(推荐)

先给读取后的DataFrame列表添加工作表名称作为列表元素名,再结合.id参数自动生成对应列:

library(readxl)
library(dplyr)
library(purrr)

# 1. 获取Excel文件的所有工作表名称
sheet_names <- excel_sheets("你的文件路径.xlsx")

# 2. 读取所有工作表并为列表元素命名(名称对应工作表名)
df_named_list <- set_names(
  map(sheet_names, ~ read_excel("你的文件路径.xlsx", sheet = .x)),
  sheet_names
)

# 3. 筛选数据并合并,同时新增工作表名称列
combined_df <- map_dfr(
  df_named_list,
  ~ filter_qval(.x),  # 应用你的自定义筛选函数
  .id = "comparison_group"  # 指定新增列的列名,可按需修改
)

方法二:使用map2_dfr同时遍历名称和数据

通过map2同时传递工作表名称和对应的数据框,筛选后手动添加名称列:

library(readxl)
library(dplyr)
library(purrr)

sheet_names <- excel_sheets("你的文件路径.xlsx")
df_list <- map(sheet_names, ~ read_excel("你的文件路径.xlsx", sheet = .x))

combined_df <- map2_dfr(
  sheet_names,
  df_list,
  ~ filter_qval(.y) %>% mutate(comparison_group = .x)
)

说明

  • 两种方法最终都会生成包含comparison_group列(或你指定的列名)的合并数据框,该列的值就是每行数据来源的工作表名称
  • 确保你的filter_qval函数能正确接收DataFrame并返回筛选后的结果

内容的提问来源于stack exchange,提问作者PesKchan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 19:37:40