В основном я хочу сделать это, но сохранить правильный порядок сортировки:
iris %>%
gather() %>%
group_by(key) %>%
count(value)
Но при сбрасывании атрибутов теряется информация о сортировке.
(Под сортировкой я подразумеваю, что количество каждого вида должно быть в порядке уровней факторов, а число каждого числа должно быть в числовом порядке).
Поэтому я подумал, что мне нужно вложить все столбцы, прежде чем я вызову метод collect, чтобы каждый столбец стал списком с одним элементом (dataframe).
Как то так, но не работает:
iris %>%
summarise_all( function(x) nest(x)) %>%
gather() %>%
mutate( count_tibbles = map(data, key, function(x) x %>% count(key)))
Есть идеи?
К запросу я добавил пример желаемого результата:
first_column_count = iris %>% count(value = Sepal.Length) %>% mutate( column_name = "Sepal.Length")
second_column_count = iris %>% count(value = Sepal.Width ) %>% mutate( column_name = "Sepal.Width" )
third_column_count = iris %>% count(value = Petal.Length) %>% mutate( column_name = "Petal.Length")
fourth_column_count = iris %>% count(value = Petal.Width ) %>% mutate( column_name = "Petal.Width" )
fifth_column_count = iris %>% count(value = Species ) %>% mutate( column_name = "Species" )
rbind(first_column_count, second_column_count, third_column_count, fourth_column_count, fifth_column_count) %>%
select(3,2,1)
Кстати, это очень близко к моей первой попытке:
iris %>%
gather() %>%
group_by(key) %>%
count(value)
Но это только потому, что уровни факторов в ирисе $ Виды отсортированы по алфавиту. Я ищу решение, которое не сортирует по алфавиту, как это делает моя первая попытка, но сортирует факторные переменные в соответствии с их факторными уровнями, а числовые переменные - по их числовому значению (а не по алфавиту). Так что это также будет работать в тех случаях, когда уровни факторов не в алфавитном порядке.