通过比较两列来删除R中的重复值

时间:2018-09-05 08:46:32

标签: sql r dplyr

我有一个类似的数据:

COL_1:名字

COL_2:姓氏

COL_1      COL_2
Michel   Jackson
Meg      Ryan
Megan    Fox
Gerard   Butler
Simon    Baker
Ryan     Meg
Fox      Megan
Baker    Simon
Jackson  Amy
Simon    Baker
Baker    Simon
Simon    Richard
Baker    Richard
Meg      Ryan
Ryan     Meg
Meg      Meg

我想要清除两个列的重复名称的输出 例如 Meg Ryan Ryan Meg 相同。因此,我在输出中只需要一个记录 Meg Ryan Ryan Meg

预期输出为

COL_1      COL_2
Michel   Jackson
Meg      Ryan
Megan    Fox
Gerard   Butler
Simon    Baker
Jackson  Amy
Simon    Richard
Baker    Richard
Meg      Meg

P.S:我有几百万条记录。

2 个答案:

答案 0 :(得分:2)

您可以使用apply

df[!duplicated(t(apply(df,1,sort))),]
      Col1    Col2
1   Michel Jackson
2      Meg    Ryan
3    Megan     Fox
4   Gerard  Butler
5    Simon   Baker
9  Jackson     Amy
12   Simon Richard
13   Baker Richard
16     Meg     Meg

答案 1 :(得分:0)

您可以在下面尝试。

方法1:您可以根据列值从数据框中删除重复的行, 如下:

基于my_data(数据框)COL_1列删除重复项

my_data[!duplicated(my_data$COL_1), ]

方法2:还可以在数据框中应用unique(),以按如下所示删除重复的行:

unique(my_data)

方法3:

步骤1:-可以按以下方式加载和安装“ dplyr”软件包:

安装

install.packages("dplyr")

加载

library("dplyr")

第2步:-使用'dplyr'软件包删除基于所有列的重复行:

distinct(my_data)

基于COL_1和COL_2删除重复的行

distinct(my_data, COL_1 , COL_2)

注意:-distinct()最适合交互式使用。应该使用函数distinct_()从函数进行调用。在这种情况下,输入必须被“引用”。

distinct(my_data, "COL_1" , "COL_2")