У меня вопрос об опросе в формате: «Вы предпочитаете розу или тюльпан? Представьте, что роза имеет цвета V1 и V2, а тюльпан имеет цвета V3 и V4»
Фактические цвета взяты из комбинаций, содержащихся в одном кадре данных:
Фрейм данных 1 (df1):
structure(list(V1 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("red", "ruby"), class = "factor"),
V2 = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L), .Label = c("blue", "violet"), class = "factor"),
V3 = structure(c(1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L,
2L, 2L, 1L, 1L, 2L, 2L), .Label = c("green", "turqoise"), class = "factor"),
V4 = structure(c(2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L,
2L, 1L, 2L, 1L, 2L, 1L), .Label = c("black", "yellow"), class = "factor")), .Names = c("V1",
"V2", "V3", "V4"), class = "data.frame", row.names = c(NA, -16L
))
В этом кадре данных (df1) первые два столбца (V1 и V2) соответствуют «розе», а последние два столбца (V3 и V4) соответствуют «тюльпану». Например, респонденту может быть показана комбинация 1 из первого ряда df1, которая является «красный синий зеленый желтый». Это означает, что респондент может выбрать «розу красного и синего цвета» или «зеленый и желтый тюльпан».
Выбор, сделанный респондентами, содержится в отдельном кадре данных (df2). У df2 есть один столбец на каждую комбинацию цветов. Если респонденту 1 была показана первая комбинация из df1 («красный синий зеленый желтый») и выбран тюльпан (зеленый и желтый), выбор отмечен цифрой «2» (для тюльпана, т.е. второго цветка) в первом ряду. из df2. Если респонденту 2 была показана вторая комбинация из df1 («красный синий зеленый черный») и была выбрана роза (красная и синяя), выбор отмечается цифрой «1» (для розы, то есть первого цветка) во втором ряду. из df2. Другими словами, «2» означает «выбранный тюльпан, роза не выбрана», а 1 »означает« выбранная роза, тюльпан не выбран ».
Фрейм данных 2 (df2):
structure(list(respondentID = 1:16, v1 = c(2L, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), v2 = c(NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), v3 = c(NA,
NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, NA, NA),
v4 = c(NA, NA, NA, 2L, NA, NA, NA, NA, NA, NA, 1L, 2L, NA,
NA, NA, NA), v5 = c(NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA), v6 = c(NA, 2L, NA, NA, NA, NA, NA,
NA, NA, 1L, NA, NA, NA, NA, NA, NA), v7 = c(NA, NA, NA, NA,
1L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), v8 = c(NA,
NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
), v9 = c(NA, NA, NA, NA, NA, NA, NA, 2L, NA, NA, NA, NA,
NA, NA, NA, NA), v10 = c(NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA), v11 = c(NA, NA, NA, NA,
NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA), v12 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA
), v13 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 1L, NA, NA), v14 = c(NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA), v15 = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), v16 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2L
)), .Names = c("respondentID", "v1", "v2", "v3", "v4", "v5",
"v6", "v7", "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15",
"v16"), class = "data.frame", row.names = c(NA, -16L))
Если бы я хотел только узнать, какой цветок был выбран и какие цвета, я мог бы сделать это, используя:
df1_with_id <- df1 %>%
setNames(paste0("color", 1:4)) %>%
mutate(combo = paste0("v", row_number()))
result_df <- df2 %>%
gather(key = combo, value = val, -respondentID) %>%
filter(!is.na(val)) %>%
left_join(df1_with_id, by = "combo") %>%
arrange(respondentID)
(По этому вопросу)
Но это не дает мне нужный мне формат. Мне нужна информация об обоих параметрах (то есть «rose, который является V1 и V2» и «tulip, который является V3 и V4»), показанная каждому респонденту в отдельных строках, и дополнительная переменная, которая указывает выбор между двумя вариантами, например:
Желаемый результат
(На рисунке «1» в переменной выбора относится к варианту, выбранному респондентом, а «0» - не выбранному варианту.)
Я не могу понять, как написать код для организации данных таким образом. Любой совет?