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

R语言删除列表中数据框a列重复行时如何保留其余列

问题原因

你原有代码仅选择了a列传入unique()函数,因此处理结果仅保留a列。另外unique()默认按整行所有列的取值判断是否重复,无法直接指定仅按某一列去重。

解决方案

基础R实现(无需加载第三方包)

使用duplicated()函数判断a列的重复项,索引原数据框的整行即可保留所有列:

my.listnew <- lapply(my.list, function(x) x[!duplicated(x$a), ])
  • 如果需要保留重复行中最后一次出现的记录,可添加fromLast = TRUE参数:
my.listnew <- lapply(my.list, function(x) x[!duplicated(x$a, fromLast = TRUE), ])

tidyverse/dplyr 实现

使用dplyr包的distinct()函数,指定.keep_all = TRUE参数即可保留除a列外的其余所有列:

library(dplyr)
my.listnew <- lapply(my.list, function(x) distinct(x, a, .keep_all = TRUE))
效果验证

举个测试示例,假设其中一个数据框结构如下:

d1 <- data.frame(a = c("苹果","苹果","香蕉","香蕉","橙子"), b = 1:5, c = 6:10)

处理后输出为:

abc
苹果16
香蕉38
橙子510

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 19:24:04