вычисление длины уникальных значений на столбец во фрейме данных - PullRequest
0 голосов
/ 26 марта 2019

У меня есть фрейм данных в r, и мне нужно вычислить количество уникальных значений в столбце.Некоторые из столбцов имеют числовой и факторный тип.Помощь.

Ответы [ 4 ]

5 голосов
/ 26 марта 2019

Допустим, ваши данные хранятся во фрейме данных с именем 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 
4 голосов
/ 26 марта 2019

Это будет работать с использованием базы R:

minifun <- function(col) {length(unique(col))}
lapply(iris, minifun)
3 голосов
/ 26 марта 2019

Для полноты, data.table решение

as.data.table(iris)[, lapply(.SD, uniqueN)]
#   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1:           35          23           43          22       3
2 голосов
/ 26 марта 2019

Вы можете использовать n_distinct с map для достижения этой цели.Вот пример:

library(tidyverse) 
iris %>% map(n_distinct)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...