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

如何编写R代码自动移除data.frame中gender与PID重复的行?

R语言移除gender和PID均重复的行解决方案

先看你的原始数据集:

df = data.frame(ID = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20), 
                gender= c(1,2,1,2,2,2,2,1,1,2,1,2,1,2,2,2,2,1,1,2),
                PID = c(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10))

针对数据量超1000行的场景,以下两种高效自动的解决方案都适用:

方法一:使用base R原生函数处理

无需额外安装包,原生支持大数据快速处理:

# 筛选出gender和PID组合不重复的行,保留每组首次出现的记录
df_cleaned <- df[!duplicated(df[c("gender", "PID")]), ]

逻辑说明:duplicated(df[c("gender", "PID")])会生成逻辑向量,标记出所有gender+PID组合重复的行(重复行返回TRUE),取反后即可筛选出唯一组合的行。

方法二:使用dplyr包的tidy语法

如果习惯tidyverse风格,代码可读性更强:

# 未安装dplyr则先执行安装命令:install.packages("dplyr")
library(dplyr)

# 按gender和PID去重,保留所有原始列,保留每组首次出现的行
df_cleaned <- df %>% 
  distinct(gender, PID, .keep_all = TRUE)

逻辑说明:distinct()默认仅保留去重后的指定列,添加.keep_all = TRUE参数可以完整保留原始数据集的所有列,自动移除gender和PID均重复的冗余行。

验证效果:运行后查看df_cleaned,比如原始数据中ID5、6的gender和PID完全相同,会仅保留ID5的行;ID15、16的gender+PID组合重复,会仅保留ID15的行,符合去重需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:05:27