代码之家  ›  专栏  ›  技术社区  ›  ip2018

删除重复行,保留数据帧中最先出现的行和所有列[duplicate]

  •  0
  • ip2018  · 技术社区  · 8 年前

    示例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)
    

    谢谢你

    1 回复  |  直到 8 年前
        1
  •  0
  •   Thiloshon Nagarajah    8 年前

    怎么样,

    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