R-evalue с несколькими переменными - PullRequest
0 голосов
/ 18 июня 2020

У меня есть ряд переменных (из опроса) со значениями (1,2,5,6). Я хочу изменить значения определенного c набора переменных с 5 на 3 и с 6 на 4. В этом примере я включил только те переменные Q11_1: Q11_13, которые мне интересно изменить. Есть около 100 других переменных, которые я не включил в пример.

survey<- read_table2("Q11_1 Q11_2   Q11_3   Q11_4   Q11_5   Q11_6   Q11_7   Q11_8   Q11_9   Q11_10  Q11_11  Q11_12  Q11_13
2   5   5   2   5   5   5   5   2   5   5   2   2
1   1   1   2   2   5   5   5   1   2   2   2   1
6   5   6   6   6   6   5   6   5   6   6   6   6
6   6   6   6   6   6   6   6   6   6   6   6   6
5   6   6   6   6   6   6   6   6   6   6   6   5
6   6   6   6   6   6   6   6   5   5   6   6   5
")

Я знаю, что могу использовать revalue для изменения значений следующим образом:

survey$Q11_1 <- revalue(survey$Q11_1, c('5'='3','6'='4'))
survey$Q11_2 <- revalue(survey$Q11_2, c('5'='3','6'='4'))
survey$Q11_3 <- revalue(survey$Q11_3, c('5'='3','6'='4'))
survey$Q11_4 <- revalue(survey$Q11_4, c('5'='3','6'='4'))
survey$Q11_5 <- revalue(survey$Q11_5, c('5'='3','6'='4'))
survey$Q11_6 <- revalue(survey$Q11_6, c('5'='3','6'='4'))
survey$Q11_7 <- revalue(survey$Q11_7, c('5'='3','6'='4'))
survey$Q11_8 <- revalue(survey$Q11_8, c('5'='3','6'='4'))
survey$Q11_9 <- revalue(survey$Q11_9, c('5'='3','6'='4'))
survey$Q11_10 <- revalue(survey$Q11_10, c('5'='3','6'='4'))
survey$Q11_11 <- revalue(survey$Q11_11, c('5'='3','6'='4'))
survey$Q11_12 <- revalue(survey$Q11_12, c('5'='3','6'='4'))
survey$Q11_13 <- revalue(survey$Q11_13, c('5'='3','6'='4'))

Есть ли способ применить эту переоценку (или какую-либо другую функцию) более эффективным способом ? Мое решение кажется излишне коренастым. Любая помощь приветствуется. Я надеялся на решение pipe / dplyr.

Спасибо !!!

1 Ответ

1 голос
/ 18 июня 2020

Вот решение, соответствующее имени столбца "Q11"

library(tidyverse)

survey<- read_table2("Q11_1 Q11_2   Q11_3   Q11_4   Q11_5   Q11_6   Q11_7   Q11_8   Q11_9   Q11_10  Q11_11  Q11_12  Q11_13
2   5   5   2   5   5   5   5   2   5   5   2   2
1   1   1   2   2   5   5   5   1   2   2   2   1
6   5   6   6   6   6   5   6   5   6   6   6   6
6   6   6   6   6   6   6   6   6   6   6   6   6
5   6   6   6   6   6   6   6   6   6   6   6   5
6   6   6   6   6   6   6   6   5   5   6   6   5
")


survey %>% 
  mutate(across(contains("Q11"),.fns = ~ case_when(.x == 5 ~ 3,
                                                   .x == 6 ~ 4,
                                                   TRUE ~ .x)))
#> # A tibble: 6 x 13
#>   Q11_1 Q11_2 Q11_3 Q11_4 Q11_5 Q11_6 Q11_7 Q11_8 Q11_9 Q11_10 Q11_11 Q11_12
#>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>  <dbl>
#> 1     2     3     3     2     3     3     3     3     2      3      3      2
#> 2     1     1     1     2     2     3     3     3     1      2      2      2
#> 3     4     3     4     4     4     4     3     4     3      4      4      4
#> 4     4     4     4     4     4     4     4     4     4      4      4      4
#> 5     3     4     4     4     4     4     4     4     4      4      4      4
#> 6     4     4     4     4     4     4     4     4     3      3      4      4
#> # ... with 1 more variable: Q11_13 <dbl>

Создано 18.06.2020 пакетом репекс (v0.3.0)

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