具有多个变量的 R 值
R-evalue with multiple variables
我有一系列变量(来自调查),其值为 (1,2,5,6)。我想将一组特定变量的值从 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 解决方案。
谢谢!!!
这是匹配列名的解决方案"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>
由 reprex package (v0.3.0)
于 2020 年 6 月 18 日创建
我有一系列变量(来自调查),其值为 (1,2,5,6)。我想将一组特定变量的值从 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 解决方案。
谢谢!!!
这是匹配列名的解决方案"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>
由 reprex package (v0.3.0)
于 2020 年 6 月 18 日创建