我有这样的数据:
data_in <- read_table2("condition 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
1 2 5 5 2 5 5 5 5 2 5 5 2 2
0 1 1 1 2 2 5 5 5 1 2 2 2 1
1 6 5 6 6 6 6 5 6 5 6 6 6 6
0 6 6 6 6 6 6 6 6 6 6 6 6 6
1 5 6 6 6 6 6 6 6 6 6 6 6 5
1 6 6 6 6 6 6 6 6 5 5 6 6 5
")我有一系列变量(来自调查),其值为(1,2,5,6)。我想要将一组特定变量的值从5更改为3,将6更改为4。在本例中,我只包含了我有兴趣更改的变量Q11_1:Q11_13。还有大约100个其他变量我没有包含在示例中。我也希望这个在condition==1的时候也能应用。
我知道我可以这样做来更改所有包含Q11的列:
survey %>%
mutate(across(contains("Q11"),.fns = ~ case_when(.x == 5 ~ 3,
.x == 6 ~ 4,
TRUE ~ .x)))现在,我想重新计算所有包含Q11并具有condition==1的列的值。如果row==0的条件不变,我不希望这些列被更改。
发布于 2020-06-23 06:34:17
我们可以在case_when中使用&
library(dplyr)
data_in %>%
mutate(across(starts_with('Q11'), ~
case_when(. == 5 & condition == 1 ~ 3,
. == 6 & condition == 6 ~ 4, TRUE ~ .)))
# A tibble: 6 x 14
# condition 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
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 1 2 3 3 2 3 3 3 3 2 3 3 2 2
#2 0 1 1 1 2 2 5 5 5 1 2 2 2 1
#3 1 6 3 6 6 6 6 3 6 3 6 6 6 6
#4 0 6 6 6 6 6 6 6 6 6 6 6 6 6
#5 1 3 6 6 6 6 6 6 6 6 6 6 6 3
#6 1 6 6 6 6 6 6 6 6 3 3 6 6 3https://stackoverflow.com/questions/62524529
复制相似问题