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

R语言dplyr包distinct按非指定列去重时保留目标列的方法

问题原因

dplyr包的distinct()函数默认仅返回传入函数用于判定重复的列,你原代码中仅传入了排除column5的其余列作为去重依据,因此返回结果会自动丢弃column5。

正确代码写法

方法1:保留所有列(默认保留重复组首行)

添加.keep_all = TRUE参数即可,该参数会让函数在按指定列判定重复的同时,保留数据框的全部列,重复组默认保留第一行的所有字段值:

library(dplyr)
dfNew <- df %>% distinct(across(-column5), .keep_all = TRUE)

也可以省略across(),直接写排除列的规则,效果完全一致:

dfNew <- df %>% distinct(-column5, .keep_all = TRUE)

方法2:自定义重复组的保留规则

如果你需要指定重复组中保留的行规则(比如保留column5取值最大/最小的行),可以用分组筛选的方式实现:

# 示例:除column5外字段一致的重复组中,保留column5值最大的行
dfNew <- df %>%
  group_by(across(-column5)) %>%
  slice_max(order_by = column5, n = 1) %>%
  ungroup()

注意:如果你的column5是非标准列名(比如带空格、特殊字符),需要用反引号包裹列名,例如`用户编号`。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:54:21