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

R中如何不使用循环/自定义函数/第三方包按Run分组去除conc列重复值

问题原因

你之前运行的DNase[!duplicated(DNase$conc),]是对全数据集的conc列做全局维度的重复值判断,由于DNase数据集中所有Run对应的浓度梯度是完全一致的,全局去重时每个conc值只会保留全表第一次出现的行——这些行全部属于Run=1的分组,后续Run下的相同conc值都会被判定为重复值剔除,最终就只会返回Run1的去重结果。

实现方法

不需要用for循环、不需要自定义函数、不需要加载任何第三方包,直接利用base R中duplicated()支持多列组合判断重复的特性,将分组列(Run)和去重列(conc)同时传入做重复判定,即可实现每个Run分组内的conc去重:

# 按Run分组,组内对conc去重,保留每个conc首次出现的对应记录
DNase_dedup <- DNase[!duplicated(DNase[, c("Run", "conc")]), ]

结果校验

运行后可以通过两个简单操作验证结果正确性:

  • 运行nrow(DNase_dedup),返回值为88:原数据集共11个Run,每个Run对应8个唯一浓度值,11*8=88,符合预期行数
  • 运行any(duplicated(DNase_dedup[, c("Run", "conc")])),返回值为FALSE,证明不存在同Run下的重复conc值

这个写法不需要拆分数据集为列表、不需要用apply系列函数做组级遍历,本质是通过「Run+conc」的联合唯一键筛选非重复记录,完全匹配你的约束要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:06:55