【问题标题】:Eliminate duplicated rows only in certain columns, keeping all the columns in R [duplicate]仅消除某些列中的重复行,将所有列保留在 R [重复]
【发布时间】:2016-11-21 14:31:16
【问题描述】:

我只向Select 发送某些列(ID、位置1、位置2 和名称)中不重复的数据。小时不同并不重要,该行仍将被视为重复。问题是我需要维护 Hour 列

|    ID | position1 | position2| Hour |   Name
---------------------------------------------------------
| ABD1  |     54340 |     33254| 10:42|   Adam 
| ABD1  |     54340 |     33254| 10:52|   Adam
| TGF5  |     54545 |     54545| 11:25|   Mike
| ABD1  |     84544 |     24424| 12:06|   Adam
| AGF4  |     25466 |     45444| 10:53|   Mike
| TGF5  |     44787 |     25847| 09:05|   Rose

在示例中,我们可以看到第 1 行和第 2 行在 ID、位置 1、位置 2 和名称上重复,所以我想删除其中一个,不管哪一个。我尝试使用

df <- sqldf('SELECT DISTINCT ID, position1, position2, Name FROM df')

问题是我丢失了 Hour 列。如何保留 df 的相同列,但只消除某些列中相等的行。

这是我需要的结果:

|    ID | position1 | position2| Hour |   Name
---------------------------------------------------------
| ABD1  |     54340 |     33254| 10:42|   Adam 
| TGF5  |     54545 |     54545| 11:25|   Mike
| ABD1  |     84544 |     24424| 12:06|   Adam
| AGF4  |     25466 |     45444| 10:53|   Mike
| TGF5  |     44787 |     25847| 09:05|   Rose  

【问题讨论】:

    标签: r sqldf


    【解决方案1】:

    怎么样:

    df[!duplicated(df[,c(1,2,3,5)]),]
    

    其中 1、2、3、5 是您要考虑的列。

    例子:

    > df
        ID  Pos1  Pos2  Hour Name
    1 ABD1 54340 33254 10:42 Adam
    2 ABD1 54340 33254 10:52 Adam
    3 TGF5 54545 54545 11:25 Mike
    4 ABD1 84544 24424 12:06 Adam
    5 AGF4 25466 45444 10:53 Mike
    6 TGF5 44787 25847 09:05 Rose
    > 
    > 
    > df[!duplicated(df[,c(1,2,3,5)]),]
        ID  Pos1  Pos2  Hour Name
    1 ABD1 54340 33254 10:42 Adam
    3 TGF5 54545 54545 11:25 Mike
    4 ABD1 84544 24424 12:06 Adam
    5 AGF4 25466 45444 10:53 Mike
    6 TGF5 44787 25847 09:05 Rose
    > 
    

    还有:

    library(sqldf)
    sqldf('SELECT * 
           FROM df 
           GROUP BY ID, position1, position2, Name')
    

    【讨论】:

    • 这并没有解决问题,而是提供了一种解决方法来避免学习 sql 命令。
    猜你喜欢
    • 2011-10-10
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 2017-12-29
    • 2019-09-16
    相关资源
    最近更新 更多