首页 > 解决方案 > 删除具有相同值但在 R 中的不同列中的重复行

问题描述

我想删除重复的行,例如如果 A==B 和 B==A,我想只保留其中一个。我有一个数据框,如下所示:

|A      |B      |
|-------|-------|
|A1CF   |APOBEC1|
|A1CF   |KHSRP  |
|A1CF   |SYNCRIP|
|APOBEC1|A1CF   |
|SYNCRIP|A1CF   |

我的预期输出是这样的:

|A      |B      |
|-------|-------|
|A1CF   |APOBEC1|
|A1CF   |KHSRP  |
|A1CF   |SYNCRIP|

我已经尝试过这些,但它不起作用。

df[!duplicated(df[,c("A","B")]),]

标签: r

解决方案


一种选择是使用最小/最大技巧,然后删除重复项:

library(SparkR)

df <- unique(cbind(least(df$A, df$B), greatest(df$A, df$B)))

这是上述的基本 R 版本:

df <- unique(cbind(ifelse(df$A < df$B, df$A, df$B),
                   ifelse(df$A >= df$B, df$A, df$B)))

推荐阅读