Длинный заголовок был бы "create cols / var 1), названный как функция определенных ответов в предыдущих cols / var и 2), которые содержат новые значения как функцию предыдущих позиций ответов в массиве (наилучшее-худшее масштабирование)application) "
Я выполняю некоторые анализы с наилучшим наихудшим масштабированием (maxdiff), и мне нужно преобразовать данные из файла необработанных ответов в файл данных, подходящий для анализов BWS.
Файл данных моих ответов dfex
, а конечный результат должен быть dfbw
.По сути, пример исходного файла данных не требует пояснений, то есть есть два вопроса q01 и q02, и респонденты указывают, какие из доступных альтернатив этим вопросам являются «лучшими» или «худшими» («наиболее полезными» и «наименее полезными»).", здесь).
В окончательном файле данных, подходящем для анализа BWS, должно указываться для каждого вопроса, какая альтернатива из четырех возможных для каждого вопроса была выбрана.Например, в случае 1, вопрос 1, респондент указал 1-ую альтернативу как «наиболее полезную» и 3-ю альтернативу как «наименее полезную».
В настоящее время я делаю это с помощью некоторых довольно глупых ручных преобразований оценок, ноЯ уверен, что доступны гораздо более элегантные решения (я просто не настолько продвинут в R и на меня оказывается большое давление).
Не могли бы вы, пожалуйста, указать мне правильное направление (то есть, как автоматизировать этот процесс и сделать его более плавным), и, если возможно, укажите, пожалуйста, причины, по которым вы выбрали использование определенного пакета или определенного подхода по сравнению сдругая (например, пользовательская функция по сравнению с комбинацией функций в пакете / с)?
# This is my starting data frame
dfex <- data.frame(stringsAsFactors=FALSE,
q01_01 = c("most useful", "least useful", "least useful", NA),
q01_02 = c(NA, "most useful", "most useful", "most useful"),
q01_03 = c("least useful", NA, NA, "least useful"),
q01_04 = c(NA, NA, NA, NA),
q02_01 = c("least useful", "least useful", NA, "least useful"),
q02_02 = c(NA, NA, NA, NA),
q02_03 = c(NA, "most useful", "most useful", "most useful"),
q02_04 = c("most useful", NA, "least useful", NA))
# which now I'm processing manually
dfex <- dfex %>%
mutate(b01_01 = case_when(q01_01 == "most useful" ~ 1)) %>%
mutate(b01_02 = case_when(q01_02 == "most useful" ~ 2)) %>%
mutate(b01_03 = case_when(q01_03 == "most useful" ~ 3)) %>%
mutate(b01_04 = case_when(q01_04 == "most useful" ~ 4)) %>%
mutate(b02_01 = case_when(q02_01 == "most useful" ~ 1)) %>%
mutate(b02_02 = case_when(q02_02 == "most useful" ~ 2)) %>%
mutate(b02_03 = case_when(q02_03 == "most useful" ~ 3)) %>%
mutate(b02_04 = case_when(q02_04 == "most useful" ~ 4)) %>%
mutate(w01_01 = case_when(q01_01 == "least useful" ~ 1)) %>%
mutate(w01_02 = case_when(q01_02 == "least useful" ~ 2)) %>%
mutate(w01_03 = case_when(q01_03 == "least useful" ~ 3)) %>%
mutate(w01_04 = case_when(q01_04 == "least useful" ~ 4)) %>%
mutate(w02_01 = case_when(q02_01 == "least useful" ~ 1)) %>%
mutate(w02_02 = case_when(q02_02 == "least useful" ~ 2)) %>%
mutate(w02_03 = case_when(q02_03 == "least useful" ~ 3)) %>%
mutate(w02_04 = case_when(q02_04 == "least useful" ~ 4))
# create (manually) cols
dfex %>%
select(c(b01_01:b01_04)) %>%
rowSums(., na.rm = T) -> dfex$B1
dfex %>%
select(c(b02_01:b02_04)) %>%
rowSums(., na.rm = T) -> dfex$B2
dfex %>%
select(c(w01_01:w01_04)) %>%
rowSums(., na.rm = T) -> dfex$W1
dfex %>%
select(c(w02_01:w02_04)) %>%
rowSums(., na.rm = T) -> dfex$W2
# getting the desired BW datafile after selecting only cols of interest
dfbw <- dfex %>% select(B1:W2)
PS: Из-за всего внимания, уделяемого tidyverse
, я подумал, что эта коллекция пакетов может подойти для моегопроблема (?).