Список всех факторов уровня данных.
с str(data)
Я получаю head
уровней (1-2 значения)
fac1: Factor w/ 2 levels ... :
fac2: Factor w/ 5 levels ... :
fac3: Factor w/ 20 levels ... :
val: num ...
с dplyr::glimpse(data)
Я получаю больше значений, но не информация о числе/значениях фактор-уровней. Есть ли автоматический способ получить всю информацию о уровне всех факторов факторов в data.frame? Краткая форма с дополнительной информацией для
levels(data$fac1)
levels(data$fac2)
levels(data$fac3)
или, точнее, элегантная версия для чего-то вроде
for (n in names(data))
if (is.factor(data[[n]])) {
print(n)
print(levels(data[[n]]))
}
ТНХ
Christof
Ответы
Ответ 1
Вот несколько вариантов. Мы прокручиваем "данные" с помощью sapply
и получаем levels
каждого столбца (при условии, что все столбцы factor
class)
sapply(data, levels)
Или, если нам нужно передать трубку (%>%
), это можно сделать как
library(dplyr)
data %>%
sapply(levels)
Или другая опция summarise_each
из dplyr
, где мы указываем levels
в пределах funs
.
data %>%
summarise_each(funs(list(levels(.))))
Ответ 2
Проще всего использовать пакет sqldf и использовать отдельный отчет. Это упрощает автоматическое получение имен уровней факторов, а затем задает их как уровни для других столбцов/переменных.
Общий фрагмент кода:
library(sqldf)
array_name = sqldf("select DISTINCT *colname1* as '*column_title*' from *table_name*")
Пример кода с использованием набора диафрагмы iris:
df1 = iris
factor1 <- sqldf("select distinct Species as 'flower_type' from df1")
factor1 ## to print the names of factors
Вывод:
flower_type
1 setosa
2 versicolor
3 virginica
Ответ 3
Или используя purrr:
data %>% purrr:map(levels)
Или сначала все факторизовать:
data %>% dplyr::mutate_all(as.factor) %>% purrr:map(levels)
И отвечая на вопрос о том, как получить длины:
data %>% map(levels) %>% map(length)
Ответ 4
Если ваша проблема заключается в том, чтобы вывести список всех уровней для фактора, то я нашел простое решение, используя:
уникальный (ДФ $ х)
Например, для печально известного набора данных радужной оболочки:
уникальный (ирис $ Species)