РЕДАКТИРОВАТЬ: добавлен образец df
У меня есть контрольный список из 3 пунктов (варианты a, b, c), в котором участники могут выбрать столько ответов, сколько они применимы к ним.В моих данных эти ответы хранятся в трех вариантах двоичных ответов (q4___a, q4___b, q4___c).У меня есть эти же данные в четырех разных временных точках (1, 2, 3, 4), поэтому мои переменные закодированы следующим образом:
q4_1___a
q4_1___b
q4_1___c
q4_2___a
q4_2___b
и т. Д., Где q4 - основа, целое число - этовремя, когда данные были собраны, и письмо является вариантом ответа.Вот примерный кадр данных:
df <- data.frame(
q4_1___a = rbinom(10, 1, .5),
q4_1___b = rbinom(10, 1, .5),
q4_1___c = rbinom(10, 1, .5),
q4_2___a = rbinom(10, 1, .5),
q4_2___b = rbinom(10, 1, .5),
q4_2___c = rbinom(10, 1, .5),
q4_3___a = rbinom(10, 1, .5),
q4_3___b = rbinom(10, 1, .5),
q4_3___c = rbinom(10, 1, .5),
q4_4___a = rbinom(10, 1, .5),
q4_4___b = rbinom(10, 1, .5),
q4_4___c = rbinom(10, 1, .5)
)
Мне нужно создать «групповые» переменные, которые объединяют результаты трех различных двоичных переменных ответа в каждый момент времени.Я могу сделать это в момент времени 1, используя следующий код:
df%>%
mutate(q4_1_group = case_when(
q4_1___a == 1 & q4_1___b == 0 & q4_1___c == 0 ~ "a",
q4_1___a == 0 & q4_1___b == 1 & q4_1___c == 0 ~ "b",
q4_1___a == 0 & q4_1___b == 0 & q4_1___c == 1 ~ "c",
q4_1___a == 1 & q4_1___b == 1 & q4_1___c == 0 ~ "ab",
q4_1___a == 1 & q4_1___b == 0 & q4_1___c == 1 ~ "ac",
q4_1___a == 0 & q4_1___b == 1 & q4_1___c == 1 ~ "bc",
q4_1___a == 1 & q4_1___b == 1 & q4_1___c == 1 ~ "abc"
))
У меня возникли проблемы с выяснением, куда идти отсюда, чтобы повторить все четыре момента времени.По сути, мне нужно изменить 1 во всех именах переменных на 2, 3 и 4, чтобы:
df%>%
mutate(q4_[i]_group = case_when(
q4_[i]___a == 1 & q4_[i]___b == 0 & q4_[i]___c == 0 ~ "a",
q4_[i]___a == 0 & q4_[i]___b == 1 & q4_[i]___c == 0 ~ "b",
q4_[i]___a == 0 & q4_[i]___b == 0 & q4_[i]___c == 1 ~ "c",
q4_[i]___a == 1 & q4_[i]___b == 1 & q4_[i]___c == 0 ~ "ab",
q4_[i]___a == 1 & q4_[i]___b == 0 & q4_[i]___c == 1 ~ "ac",
q4_[i]___a == 0 & q4_[i]___b == 1 & q4_[i]___c == 1 ~ "bc",
q4_[i]___a == 1 & q4_[i]___b == 1 & q4_[i]___c == 1 ~ "abc"
))
, где [i]
соответствует чему-то вроде c(1:4)
.Я чувствую, что должен быть простой способ сделать это, используя purrr
, но я изо всех сил пытаюсь понять это.Любая помощь будет принята с благодарностью!