заполнение таблиц в парном дизайне с отсутствующими уровнями - PullRequest
0 голосов
/ 08 марта 2019

У меня есть план повторных измерений с категориальными переменными. Допустим, участники сообщили о своем отношении («Одобрить», «Нейтрально», «Отклонить») в моменты времени 1 и 2. Затем я создаю таблицу с частотами комбинаций ответов.

# setup
set.seed(123)
library(tidyverse)

# made-up data
survey.data <- data.frame(
  `1st survey` = c('Approve', 'Approve', 'Neutral', 'Approve'),
  `2nd survey` = c('Approve', 'Disapprove', 'Approve', 'Neutral'),
  `Counts` = c(79, 15, 86, 10),
  check.names = FALSE
) %>%
tidyr::uncount(., Counts) %>%
  tibble::as_tibble()

# table of counts
table("1" = survey.data$`1st survey`, "2" = survey.data$`2nd survey`)
#>          2
#> 1         Approve Disapprove Neutral
#>   Approve      79         15      10
#>   Neutral      86          0       0

Обратите внимание, что поскольку никто не выбрал параметр "Disapprove" в момент времени 1, он отсутствует в таблице. Это, конечно, ожидаемо. Но функция, которую я хочу использовать (rcompanion::cohenG), ожидает одинаковое количество строк и столбцов в таблице. Поэтому мне было интересно, как я могу изменить код выше, чтобы получить ожидаемый результат здесь -

#>          2
#> 1         Approve Disapprove Neutral
#>   Approve      79         15      10
#>   Disapprove    0          0       0 
#>   Neutral      86          0       0

1 Ответ

2 голосов
/ 08 марта 2019

Вы можете разыграть ответы на факторы с тремя известными уровнями

levels <- c("Disapprove", "Neutral", "Approve")

survey.data <- survey.data %>%
  mutate_at(vars(`1st survey`,
                 `2nd survey`),
            factor, levels = levels)

table(survey.data$`1st survey`,
      survey.data$`2nd survey`)
#>             
#>              Disapprove Neutral Approve
#>   Disapprove          0       0       0
#>   Neutral             0       0      86
#>   Approve            15      10      79

Создано в 2019-03-08 пакетом представ. (v0.2.1)

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