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

如何在R中基于两指定列筛选重复行并保留唯一行?

在R中基于指定列保留唯一行的实现方法

你可以通过以下两种常用方法实现需求:基于student和grade列的组合去重,仅保留每组的第一行,同时保留其他列的对应值。

方法一:使用dplyr包(tidyverse生态)

dplyr的distinct()函数可以直接指定去重的列,并通过.keep_all = TRUE参数保留其他列的内容:

# 先加载dplyr包(未安装则先运行install.packages("dplyr"))
library(dplyr)

df1 <- tibble(student=c("John", "John", "John", "Mark", "June"), 
              grade=c("A", "A", "A", "B", "A"), 
              age=c(18,16, 14, 19, 20), 
              city=c("Chicago", "Seattle", "LA", "SF", "LA"))

# 执行去重
df2 <- df1 %>% 
  distinct(student, grade, .keep_all = TRUE)

# 查看结果
df2

运行后得到的df2与你期望的输出一致:

# A tibble: 3 × 4
  student grade   age city   
  <chr>   <chr> <dbl> <chr>  
1 John    A        18 Chicago
2 Mark    B        19 SF     
3 June    A        20 LA     

方法二:使用Base R

无需额外安装包,利用duplicated()函数筛选出首次出现的行:

df1 <- tibble(student=c("John", "John", "John", "Mark", "June"), 
              grade=c("A", "A", "A", "B", "A"), 
              age=c(18,16, 14, 19, 20), 
              city=c("Chicago", "Seattle", "LA", "SF", "LA"))

# 基于student和grade列判断重复,保留非重复行(即首次出现的行)
df2 <- df1[!duplicated(df1[c("student", "grade")]), ]

# 查看结果
df2

该方法同样能生成符合要求的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:29:57