【问题标题】:Count unique values by column按列计算唯一值
【发布时间】:2020-10-02 19:52:29
【问题描述】:

我找了这个答案很长一段时间,但没有找到任何东西,所以在这里......我如何按列计算不同值的数量,给定以下数据框?

> df <- data.frame(x = c(1,2,3), y = c(NA, NA, NA), z = c(NA, NA, 1))
> df
  x  y  z
1 1 NA NA
2 2 NA NA
3 3 NA  1

【问题讨论】:

    标签: r


    【解决方案1】:

    使用lengths + unique 的简单基本 R 选项

    > lengths(sapply(df,unique))
    x y z
    3 1 2
    

    【讨论】:

      【解决方案2】:

      你也可以在base R试试:

      #Code
      apply(df,2, function(x) length(unique(x)))
      

      输出:

      x y z 
      3 1 2 
      

      【讨论】:

        【解决方案3】:

        使用map 和lengths

        library(purrr)
        map(df, unique) %>% lengths
        # x y z 
        #3 1 2 
        

        或者使用data.table

        library(data.table)
        setDT(df)[, lapply(.SD, uniqueN)]
        

        【讨论】:

          【解决方案4】:

          这是一种方法:

          library(dplyr)
          df %>% mutate(across(where(function(x){TRUE}), n_distinct)) %>% distinct()
          

          这只是按列应用dplyr 的n_distinct 函数。 where(function(x){TRUE}) 将为每一列返回 TRUE,基本上是在 across 调用中选择所有的方法。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-12-18
            • 2021-10-31
            • 1970-01-01
            • 2014-04-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多