Кросс-таблица с множественным выбором и переменной веса - PullRequest
0 голосов
/ 06 февраля 2020

Я учусь использовать превосходный пакет "expss" R.

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

Категориальной переменной является "пол" в этом кадре данных, а переменной веса - "survey_weight":

demo <- tribble(
~dummy1, ~dummy2, ~dummy3, ~survey_weight, ~sex,
      1,       0,       0,          1.5,  "male",
      1,       1,       0,          1.5,  "female",
      1,       1,       1,           .5,  "female",
      0,       1,       1,          1.5,  "male",
      1,       1,       1,           .5,  "male",
      0,       0,       1,           .5,  "male",
)
demo 

Мне нужно рассчитать процент на основе общего числа респондентов, ответивших на вопрос, а не на общее количество ответов.

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

Ответы [ 2 ]

1 голос
/ 07 февраля 2020
library(expss)
demo = text_to_columns('
 dummy1   dummy2   dummy3  survey_weight  sex
      1        0        0            1.5  male
      1        1        0            1.5  female
      1        1        1             .5  female
      0        1        1            1.5  male
      1        1        1             .5  male
      0        0        1             .5  male
')


demo %>% 
    tab_cells(mdset(dummy1 %to% dummy3)) %>%  # 'mdset' designate that with have multiple dichotomy set
    tab_cols(sex) %>%  # columns
    tab_weight(survey_weight) %>% # weight
    tab_stat_cpct() %>% # statistic
    tab_pivot() 

# |              |    sex |      |
# |              | female | male |
# | ------------ | ------ | ---- |
# |       dummy1 |    100 | 50.0 |
# |       dummy2 |    100 | 50.0 |
# |       dummy3 |     25 | 62.5 |
# | #Total cases |      2 |  4.0 |

# shorter notation with the same result
calc_cro_cpct(demo, mdset(dummy1 %to% dummy3), sex, weight = survey_weight)
0 голосов
/ 07 февраля 2020

Может быть, мы можем использовать cro_cpct

library(expss)
calculate(demo, cro_cpct(list(dummy1, dummy2, dummy3), weight = survey_weight, sex))
#                                 
# |              |    sex |      |
# |              | female | male |
# | ------------ | ------ | ---- |
# |            0 |        | 50.0 |
# |            1 |    100 | 50.0 |
# | #Total cases |      2 |  4.0 |
# |            0 |        | 50.0 |
# |            1 |    100 | 50.0 |
# | #Total cases |      2 |  4.0 |
# |            0 |     75 | 37.5 |
# |            1 |     25 | 62.5 |
# | #Total cases |      2 |  4.0 |
...