Можете ли вы задать свой второй вопрос в качестве отдельного вопроса? Лучше держать каждый вопрос отдельно, чтобы будущим читателям было легче найти решения для каждой конкретной проблемы c.
Для первой проблемы идея заключается в использовании if_else()
, где, если слово «Другое» включено (используется str_detect()
), замените на q1_other_answer
, иначе оставьте как есть. Затем примените это к нужным переменным, используя mutate_at()
.
library(tidyverse)
mydf <- tribble(
~responseid, ~color, ~q1_first_choice, ~q1_second_choice, ~q1_third_choice, ~q1_other_answer,
34, "red " , "q1_red_b " , "q1_red_a " , "q1_red_other " , "Pomegranate" ,
35, "blue " , "q1_blue_a " , "q1_blue_c " , "q1_blue_b " , NA ,
36, "green " , "q1_green_other" , "q1_green_b " , "q1_green_a " , "Tangerine" ,
37, "purple" , "q1_purple_b " , "q1_purple_a " , "q1_purple_c " , NA ,
38, "red " , "q1_red_a " , "q1_red_other" , "q1_red_c " , "Watermelon" ,
39, "green " , "q1_green_a " , "q1_green_c " , "q1_green_b " , NA ,
40, "purple" , "q1_purple_b " , "q1_purple_a " , "q1_purple_c " , NA ,
41, "blue " , "q1_blue_c " , "q1_blue_a " , "q1_blue_other" , "Blueberries" ,
42, "blue " , "q1_blue_a " , "q1_blue_c " , "q1_blue_b " , NA ,
43, "green " , "q1_green_c " , "q1_green_b " , "q1_green_a " , NA ,
44, "red " , "q1_red_b " , "q1_red_a " , "q1_red_c " , NA
) %>%
mutate_if(is.character, str_trim)
mutate_at(mydf, vars(ends_with("choice")), ~ if_else(str_detect(., "other"), q1_other_answer, .))
# A tibble: 11 x 6
responseid color q1_first_choice q1_second_choice q1_third_choice q1_other_answer
<dbl> <chr> <chr> <chr> <chr> <chr>
1 34 red q1_red_b q1_red_a Pomegranate Pomegranate
2 35 blue q1_blue_a q1_blue_c q1_blue_b NA
3 36 green Tangerine q1_green_b q1_green_a Tangerine
4 37 purple q1_purple_b q1_purple_a q1_purple_c NA
5 38 red q1_red_a Watermelon q1_red_c Watermelon
6 39 green q1_green_a q1_green_c q1_green_b NA
7 40 purple q1_purple_b q1_purple_a q1_purple_c NA
8 41 blue q1_blue_c q1_blue_a Blueberries Blueberries
9 42 blue q1_blue_a q1_blue_c q1_blue_b NA
10 43 green q1_green_c q1_green_b q1_green_a NA
11 44 red q1_red_b q1_red_a q1_red_c NA