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

使用filter()函数移除medecin列空值时遇重复列名报错

问题解决:filter()报错"Can't transform a data frame with duplicate names"

核心原因

你的数据集存在重复列名(两个ecart列),还有一列无列名(列名为NA),这是触发报错的直接原因——dplyr的函数(包括filter())无法处理列名重复的数据集,和你筛选medecin空值的逻辑无关。

解决步骤

1. 清理重复/无效列名

推荐用janitor包的clean_names()函数批量处理,它会自动给重复列名添加后缀,给无列名的列生成合理名称:

# 先安装janitor(如果未安装)
# install.packages("janitor")
library(janitor)
library(dplyr)

# 清理列名
pg_21_clean <- pg_21 %>%
  clean_names()

或者手动指定重复列的新名称,更精准:

pg_21_clean <- pg_21 %>%
  rename(
    ecart_sejours = ecart,       # 第一个ecart对应住院数差值
    ecart_ca = ecart.1,          # 第二个ecart对应营收差值
    unnamed_metric = `NA`        # 给无列名的列命名
  )

2. 执行筛选逻辑

列名修复后,再运行你的筛选代码即可正常工作:

PG_21 <- pg_21_clean %>%
  filter(medecin != "")

如果medecin列同时存在空字符串和NA值,建议同时过滤NA:

PG_21 <- pg_21_clean %>%
  filter(medecin != "" & !is.na(medecin))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:33:31