Мы можем использовать replace
df_1[1:2] <- replace(df_1[1:2], df_1[1:2] >=2, 9)
Или другой вариант - создать логическую матрицу на подмножестве 'x.' столбцы, извлеките значения и присвойте ему 9
df_1[1:2][df_1[1:2] >= 2] <- 9
. Для изменения factor
нам нужно либо снова вызвать factor
, либо заранее добавить levels
levels(df_1$y) <- c(levels(df_1$y), "99")
df_1$y
#[1] 4 4 4 2 4 1 1 4 1 2 3 2 2 5 2 1 3 3 4 3
#Levels: 1 2 3 4 5 99
df_1$y[df_1$y == '3'] <- '99'
df_1$y
#[1] 4 4 4 2 4 1 1 4 1 2 99 2 2 5 2 1 99 99 4 99
@#Levels: 1 2 3 4 5 99
Или, как упомянул @thelatemail, если мы отбрасываем levels
во время замены
levels(df_1$y)[levels(df_1$y) == '3'] <- "99"
Или можем использовать fct_recode
из forcats
library(forcats)
df_1$y <- fct_recode(df_1$y, "99" = "3")