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

R语言使用bind_rows合并Excel提取数据出现重复输出问题求助

问题原因排查

  1. 数据重复是管道语法误用导致:%>%会自动将左侧的extracted_data作为bind_rows的第一个输入参数,你又主动传入了一次extracted_data,相当于将两份完全相同的列表合并,自然出现重复数据。
  2. 原读取代码存在笔误:你定义了路径变量all_data,但调用excel_sheets时传入了未定义的all_results,实际运行会报错。

解决方案

场景1:宽格式为「每个sheet对应一行,3列分别存储B2、B3、B4的取值」

library(readxl)
library(dplyr)
library(tidyr)

# 修正读取逻辑
wdir <- "你的工作目录路径"
all_data <- file.path(wdir, 'data_input.xlsx')
tab_names <- excel_sheets(path = all_data)

# 批量读取各sheet指定范围
extracted_data <- lapply(tab_names, function(x) {
  df <- read_excel(all_data, sheet = x, col_names = FALSE, range = "B2:B4")
  df$sheet_name <- x
  df$pos <- c("B2_val", "B3_val", "B4_val")
  return(df)
}) %>% bind_rows()

# 转宽格式
extracted_data_wide <- extracted_data %>%
  pivot_wider(names_from = pos, values_from = ...1)

场景2:宽格式为「每个sheet对应一列,3行分别存储B2、B3、B4的取值」

可使用更简洁的写法直接生成结果:

library(readxl)

wdir <- "你的工作目录路径"
all_data <- file.path(wdir, 'data_input.xlsx')
tab_names <- excel_sheets(path = all_data)

extracted_data_wide <- sapply(tab_names, function(x) {
  read_excel(all_data, sheet = x, col_names = FALSE, range = "B2:B4")[[1]]
}) %>% as.data.frame()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:02