我在r中有一个数据框,我需要计算每列的唯一值的数量。一些列是数字和因子类型。帮助。
答案 0 :(得分:4)
这将使用基数R:
minifun <- function(col) {length(unique(col))}
lapply(iris, minifun)
答案 1 :(得分:4)
比方说,您的数据存储在名为df
的数据框中。
您可以使用
在每一列中获取唯一元素sapply(df, unique)
您可以使用来获取每一列中唯一元素的数量
sapply(sapply(df, unique), length)
以iris
数据集为例:
df = iris
> sapply(sapply(df, unique), length)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
35 23 43 22 3
答案 2 :(得分:3)
为完整起见,请使用data.table
解决方案
as.data.table(iris)[, lapply(.SD, uniqueN)]
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1: 35 23 43 22 3
答案 3 :(得分:2)
您可以将n_distinct
与map
配合使用来实现此目的。这是一个示例:
library(tidyverse)
iris %>% map(n_distinct)