【问题标题】:what is the most elegant way to find the first column of a data.frame that has all unique values?找到具有所有唯一值的 data.frame 的第一列的最优雅方法是什么?
【发布时间】:2018-02-10 03:48:25
【问题描述】:

我有一个 data.frame,它可能包含任意数量的列和值。我需要找到具有所有唯一值的第一列的名称(从 lhs 开始)。 例如:

df <- data.frame(char = c("a", "b", "b"),
                 num = c(1.1, 2.2, 2.2),
                 key = c(1, 2, 3),
                 key2 = c("a", "b", "c"))

最终解决方案应该是:“key”

我的解决方案:

  keys <- df[purrr::map_lgl(df, ~ !any(duplicated(.)))] 
  names(keys)[1]

有效。我只是想知道是否有更有效的方法来做到这一点(在处理时间和代码量方面都很有效)。

【问题讨论】:

    标签: r dataframe key unique


    【解决方案1】:

    如果您确定至少有一列包含所有唯一值,请使用:

    which.min(sapply(df,anyDuplicated))
    

    它会返回

    # key 
    #   3 
    

    【讨论】:

      【解决方案2】:

      另一个base R 选项是Filter

      names(Filter(Negate(anyDuplicated), df))[1]
      #[1] "key"
      

      【讨论】:

        猜你喜欢
        • 2017-05-10
        • 2011-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-05
        相关资源
        最近更新 更多