【问题标题】:Remove duplicate rows keeping the ones that appear first and all columns of a dataframe [duplicate]删除重复的行,保留首先出现的行和数据框的所有列[重复]
【发布时间】:2018-06-25 18:35:19
【问题描述】:

一个例子df:

a = c("a", "b", "b", "b", "c")
b = c(1,4,3,2,5)
df = cbind.data.frame(a,b)

如何删除仅按“a”列搜索的重复行并保留最先出现的行。我想保留相应行的其他列。期望的输出:

a1 = c("c","b","a")
b1 = c(5,4,1)
df1 = cbind.data.frame(a1,b1)

我想在 dplyr 管道中使用代码。例如,

df2 = df %>% arrange(desc(b)) %>% filter(b >= 1)

谢谢

【问题讨论】:

    标签: r dataframe dplyr tidyverse


    【解决方案1】:

    怎么样,

    df[!duplicated(a), ]
    
    #   a b
    # 1 a 1
    # 2 b 4
    # 5 c 5
    

    要与管道一起使用,请创建一个函数,

    uniqueValues <- function(df, columnName){
        df[!duplicated(df[columnName]), ]
    }
    
    > df %>% arrange(desc(b)) %>% filter(b >= 1) %>% uniqueValues('a')
    # a b
    # 1 c 5
    # 2 b 4
    # 5 a 1
    

    【讨论】:

    • 不能将它与 dplyr 管道一起使用!
    • 添加了与管道一起使用的示例。
    • 谢谢。我发现的另一个解决方案是使用:group_by(a) %&gt;% summarise(b=head(b,1))
    猜你喜欢
    • 2011-06-24
    • 2011-08-26
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2018-10-14
    相关资源
    最近更新 更多