Существует множество способов атаковать это. Достаточно простого оператора case_when
:
library(tidyverse)
df <- data.frame(
V1 =c (1,2,2,1,2),
V2 = c(2,2,1,2,2),
V3 = c(3,5,2,1,4)
)
df
#> V1 V2 V3
#> 1 1 2 3
#> 2 2 2 5
#> 3 2 1 2
#> 4 1 2 1
#> 5 2 2 4
df %>%
mutate(
V1 = case_when(V1 == 1 ~ 2, V1 == 2 ~ 1),
V2 = case_when(V2 == 1 ~ 2, V2 == 2 ~ 1)
)
#> V1 V2 V3
#> 1 2 1 3
#> 2 1 1 5
#> 3 1 2 2
#> 4 2 1 1
#> 5 1 1 4
Но так как вы сказали mutate_at
, вы, вероятно, хотите использовать функцию:
flip_ones_and_twos <- function(x) {
return(x %% 2 + 1)
}
df %>%
mutate_at(vars(V1, V2), ~ flip_ones_and_twos(.))
#> V1 V2 V3
#> 1 2 1 3
#> 2 1 1 5
#> 3 1 2 2
#> 4 2 1 1
#> 5 1 1 4
Я уверен, что есть и другие подходы (например, if.else
или if_else
).