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

R语言导入Excel后如何保留重名数据列的最后一列

问题原因

read_excel()默认会对重复列名做自动重命名修复,会给重复的列名追加...数字格式的后缀,你原始表的两列Patient读入后会变成Patient、Patient...2,列名已经不再完全重复,所以你写的duplicated()筛选逻辑无法匹配到重复列,自然得不到预期结果。

解决方案

方案1:读入阶段保留原始重复列名

读入时指定.name_repair = "minimal",禁止readxl自动修改重复列名,再执行你原来的筛选逻辑即可:

library(readxl)
x <- read_excel(path, sheet = 1, .name_repair = "minimal")
df <- data.frame(x)
df <- df[, !duplicated(colnames(df), fromLast = TRUE)]

方案2:已读入数据的修复方案

如果数据已经读入到环境中,可以先把readxl自动追加的后缀删掉,还原原始列名后再筛选:

# 清除列名末尾自动追加的...+数字后缀
colnames(df) <- sub("\\.\\.\\.\\d+$", "", colnames(df))
# 保留每一组重名列的最右侧列
df <- df[, !duplicated(colnames(df), fromLast = TRUE)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 06:06:04