Как найти количество экземпляров значения в разных столбцах набора данных R? - PullRequest
0 голосов
/ 28 февраля 2019

Это воспроизводимый пример набора данных, который у меня есть:

Health <- data.frame(id=c(1,1,2,3,3),
                     ethnicity = c(2,2,2,1,1),
                     dead=c(0,0,0,0,1), 
                     Asthma = c(1,1,1,0,0),
                     Diabetes = c(1,0,1,0,1),
                     Sex = c("M","F","M","M","M"))

Я хотел бы знать, как рассчитать количество экземпляров каждого значения в наборе данных, которые я затем экспортировал бы как отдельныйТаблица.

Мои ожидаемые результаты выглядят так:

          0  1  2
Ethnicity    3  2
Asthma    2  3
Dead      4  1
Diabetes  2  3

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Редактировать: это похоже на ответ Сотоса.

Вы можете использовать table() после вас gather в длинном формате:

library(dplyr)

Health %>% 
    select(-id, -Sex) %>% 
    tidyr::gather("key", "value") %>% 
    group_by(key) %>% 
    table()

#            value
#key         0 1 2
#  Asthma    2 3 0
#  dead      4 1 0
#  Diabetes  2 3 0
#  ethnicity 0 2 3
0 голосов
/ 28 февраля 2019

Вам нужно сначала преобразовать в длинный формат, сосчитать и распространить, то есть

library(tidyverse)

Health %>% 
 gather(var, val, -c(id, Sex)) %>% 
 group_by(var, val) %>% 
 count() %>% 
 spread(val, n, fill = 0)

, что дает

# A tibble: 4 x 4
# Groups:   var [4]
   var         `0`   `1`   `2`
  <chr>     <int> <int> <int>
1 Asthma        2     3     0
2 dead          4     1     0
3 Diabetes      2     3     0 
4 ethnicity     0     2     3

Базовое решение R этогоконцепция может быть (комплименты @markus),

t(table(stack(Health[, 2:5])))
#           values
#ind         0 1 2
#  ethnicity 0 2 3
#  dead      4 1 0
#  Asthma    2 3 0
#  Diabetes  2 3 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...