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

如何在R语言数据框中保留列中重复值的唯一记录?

R语言按指定列保留唯一记录的方法

针对你需要在数据框中按Assembly_ID列保留唯一记录、同时保留所有列信息的需求,这里提供几种常用的实现方法:

1. Base R 原生方法

用duplicated()函数标记重复行,筛选出非重复的记录:

# 假设你的数据框名为df
df_unique <- df[!duplicated(df$Assembly_ID), ]
  • 上述代码会保留每个Assembly_ID第一次出现的完整行记录
  • 如果需要保留每个Assembly_ID最后一次出现的记录,添加fromLast = TRUE参数:
df_unique_last <- df[!duplicated(df$Assembly_ID, fromLast = TRUE), ]

2. dplyr 包(tidyverse 生态)方法

使用distinct()函数,配合.keep_all = TRUE参数保留所有列:

library(dplyr)
# 保留每个Assembly_ID第一次出现的完整记录
df_unique <- df %>% distinct(Assembly_ID, .keep_all = TRUE)
  • 若要保留最后一次出现的记录,可以先倒序排列再去重:
df_unique_last <- df %>% 
  arrange(desc(row_number())) %>% 
  distinct(Assembly_ID, .keep_all = TRUE) %>% 
  arrange(row_number())

3. data.table 包方法(适合大数据集)

如果你的数据量较大,data.table的处理效率更高:

library(data.table)
setDT(df) # 将普通数据框转换为data.table格式

# 保留每个Assembly_ID的第一条记录
df_unique <- df[, .SD[1], by = Assembly_ID]

# 保留每个Assembly_ID的最后一条记录
df_unique_last <- df[, .SD[.N], by = Assembly_ID]
  • .SD代表每个分组的子数据框,.N是每个分组的行数,.SD[.N]即取分组的最后一行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:27:34