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

如何在R中删除所有列均存在连续重复的行?

问题

我有一个包含4列、超过1万行的大型data frame,其中多数行存在重复。我希望仅删除所有4列均存在连续重复的行,保留其余行(包括非连续的重复行)。

原数据前10行如下:

ENTREZID  G1.SYMBOL    G2.SYMBOL    G3.SYMBOL   
   <chr>     <chr>        <chr>        <chr>       
 1 105378589 LOC105378589 LOC105378589 LOC105378589
 2 2563      GABRD        GABRD        GABRD       
 3 2563      GABRD        GABRD        GABRD       
 4 2563      GABRD        GABRD        GABRD             
 5 339448    C1orf174     C1orf174     NA 
 6 339448    C1orf174     C1orf174     C1orf174
 7 55966     AJAP1        AJAP1        AJAP1       
 8 10277     UBE4B        UBE4B        NA          
 9 2810      SFN          SFN          SFN         
10 339488    TFAP2E       NA           TFAP2E  

预期输出:

ENTREZID  G1.SYMBOL    G2.SYMBOL    G3.SYMBOL   
   <chr>     <chr>        <chr>        <chr>       
 1 105378589 LOC105378589 LOC105378589 LOC105378589
 2 2563      GABRD        GABRD        GABRD  
 5 339448    C1orf174     C1orf174     NA 
 6 339448    C1orf174     C1orf174     C1orf174       
 7 55966     AJAP1        AJAP1        AJAP1  
 8 10277     UBE4B        UBE4B        NA          
 9 2810      SFN          SFN          SFN         
10 339488    TFAP2E       NA           TFAP2E 

解决方案

方法1:使用dplyr包(推荐,高效简洁)

通过判断当前行与前一行是否完全一致,筛选出非连续重复的行:

library(dplyr)

# 假设数据框名为df
df_cleaned <- df %>%
  filter(!rowwise_all(~ . == lag(.)))

也可以拆分列逐一判断,逻辑更直观:

df_cleaned <- df %>%
  filter(!(ENTREZID == lag(ENTREZID) & 
           G1.SYMBOL == lag(G1.SYMBOL) & 
           G2.SYMBOL == lag(G2.SYMBOL) & 
           G3.SYMBOL == lag(G3.SYMBOL)))

方法2:使用Base R

通过逐行比较当前行与前一行的所有列值,完成筛选:

# 计算每行是否与前一行完全重复
is_duplicate <- sapply(2:nrow(df), function(i) all(df[i,] == df[i-1,]))
# 第一行无前驱,标记为非重复
is_duplicate <- c(FALSE, is_duplicate)

# 保留非连续重复的行
df_cleaned <- df[!is_duplicate, ]

注意事项

  • 两种方法均只删除连续的完全重复行,非连续的重复行会被保留
  • 处理大型数据时,dplyr方法的运行效率更高
  • 针对NA值:R中NA == NA返回NA,但上述方法会将两行对应位置的NA视为相等,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:23:11