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

如何在R中移除col1重复但col2取值不同的数据行?

解决R中筛选col1分组内col2取值一致的所有行问题

核心解决方案

你需要按col1分组后,筛选出每个分组内col2唯一值数量为1的所有行,用dplyr可以这样实现:

library(dplyr)

df <- data.frame(col1 = c("A", "A","A","B","B","C","D","E","F","F"), 
                 col2 = c("g1", "g1", "g1", "g2", "g3", "g1","g4","g4","g5","g6"))

df_result <- df %>%
  group_by(col1) %>%
  filter(n_distinct(col2) == 1) %>%
  ungroup()

print(df_result)

代码解释

  • group_by(col1):按col1的值对数据框分组
  • filter(n_distinct(col2) == 1):筛选出每个分组里col2的唯一值数量等于1的组,也就是该col1对应的所有col2取值完全一致
  • ungroup():取消分组,恢复普通数据框结构

验证输出

运行上述代码后,输出结果和你期望的一致:

# A tibble: 6 × 2
  col1  col2 
  <chr> <chr>
1 A     g1   
2 A     g1   
3 A     g1   
4 C     g1   
5 D     g4   
6 E     g4   

为什么你之前的代码不符合需求

你用的distinct(col1, col2, .keep_all=TRUE)是提取每个col1-col2组合的唯一行,相当于去重保留不同组合,这和你要保留**整个分组所有行(只要该分组col2无差异)**的需求正好相反。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:22:46