Как объединить несколько дихотомических переменных (да / нет) и получить таблицу множественных ответов в R? - PullRequest
0 голосов
/ 27 марта 2020

В моем наборе данных, и у меня есть несколько переменных, как это -

Hypertension = 1,0,1,1,1,1,0,1
Diabetes = 1,1,0,0,1,1,0,1
Other NCD = 1,1,0,0,0,0,1,1

здесь, 1 = да и 0 = нет

Теперь я хочу связать все эти "да" ответы от вышеупомянутых переменных и создайте таблицу с несколькими ответами, подобную этой -

enter image description here

SPSS имеет функцию под названием «Multiple Response». Это изображение является одним из выходов этой функции. Как мне создать эту таблицу?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

Пожалуйста, попробуйте это.

dat <- data.frame(
  Hypertension = c(1,0,1,1,1,1,0,1),
  Diabetes =  c(1,1,0,0,1,1,0,1),
  `Other NCD` = c(1,1,0,0,0,0,1,1),
  check.names = FALSE
)

library(dplyr)
library(tidyr) # pivot_longer
dat %>%
  tidyr::pivot_longer(everything(), names_to="k", values_to="v") %>%
  group_by(k) %>%
  summarize(
    n = n(), 
    cases = sum(v), 
    percent = 100 * cases / n()
  ) %>%
  ungroup() %>%
  mutate(overall = 100 * cases / sum(n))
# # A tibble: 3 x 5
#   k                n cases percent overall
#   <chr>        <int> <dbl>   <dbl>   <dbl>
# 1 Diabetes         8     5    62.5    20.8
# 2 Hypertension     8     6    75      25  
# 3 Other NCD        8     4    50      16.7
1 голос
/ 27 марта 2020

С base R мы можем сделать

dat1 <- transform(stack(colSums(dat)), n = nrow(dat))
dat1$percent <- 100 *dat1$values/dat1$n
dat1$overall <- round(100 * dat1$values/sum(dat1$n), 2)

data

dat <- data.frame(
  Hypertension = c(1,0,1,1,1,1,0,1),
  Diabetes =  c(1,1,0,0,1,1,0,1),
  `Other NCD` = c(1,1,0,0,0,0,1,1),
  check.names = FALSE
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...