получение сводки по каждому столбцу df (dplyr :: count) - PullRequest
4 голосов
/ 03 апреля 2020

У меня есть следующий фрейм данных

tbl <- structure(list(col1 = c("a", NA, "b", NA, "c", "c"), col2 = c("n", 
"n", "b", "a", NA, "c"), col3 = c("z", "a", "z", "b", "1", "c"
)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"
))
# A tibble: 6 x 3
  col1  col2  col3 
  <chr> <chr> <chr>
1 a     n     z    
2 NA    n     a    
3 b     b     z    
4 NA    a     b    
5 c     NA    1    
6 c     c     c

Можно ли применить функцию dplyr :: count к каждому столбцу или другую функцию, которая возвращает уникальные записи каждый столбец и, возможно, номер каждого уникального значения?

Ответы [ 2 ]

4 голосов
/ 03 апреля 2020

Мы можем l oop над names с map и применить count

library(dplyr)
library(purrr)
map(names(tbl), ~ tbl %>% 
                     select(.x) %>% 
                     count(!! rlang::sym(.x)))

Или можем применить table с summarise_all и вернуть list столбец

tbl %>%
    summarise_all( ~ list(table(.)))

или для количества различных элементов

tbl %>%
    summarise_all(n_distinct)

или в base R

lapply(tbl, function(x) as.data.frame(table(x)))
2 голосов
/ 03 апреля 2020

Одно решение с использованием dplyr и purrr может быть для числа различных значений:

map(tbl, n_distinct)

$col1
[1] 4

$col2
[1] 5

$col3
[1] 5

Для счетчиков:

map(tbl, table)

$col1

a b c 
1 1 2 

$col2

a b c n 
1 1 1 2 

$col3

1 a b c z 
1 1 1 1 2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...