r:tidyverse:forcats_fct_recode
fct_recode (forcats)
In R, il nome dei livelli di un fattore può essere modificato in questo modo:
# dati library(MASS) data(survey) levels(survey$Smoke)
[1] "Heavy" "Never" "Occas" "Regul"
# rinomino il livello del fattore levels(survey$Smoke)[levels(survey$Smoke)=="Never"] <- "Mai" levels(survey$Smoke)
[1] "Heavy" "Mai" "Occas" "Regul"
La funzione fct_recode()
del pacchetto forcats (che viene installato con gli altri pacchetti del tidyverse) facilita di gran lunga questa operazione.
Possiamo infatti indicare i nuovi nomi dei livelli con nuovo_nome = “vecchio_nome”
, oppure con “nuovo nome” = “vecchio_nome”
(attenzione alle virgolette), ed elencandoli uno dopo l'altro:
library(tidyverse) survey$Smoke <- fct_recode(survey$Smoke, Molto = "Heavy", Mai = "Never", Regol = "Regul")
oppure, con un vettore, in questo modo:
livelli <- c(Molto = "Heavy", Mai = "Never", Regol = "Regul") survey$Smoke <- fct_recode(survey$Smoke, !!! livelli) levels(survey$Smoke)
[1] "Molto" "Mai" "Occas" "Regol"
Volendo usare questa funzione mentre si stanno ricodificando o rinominando altre variabili, la useremo con mutate():
# ricodifichiamo i livelli e poi cambiamo nome survey <- survey %>% mutate(Smoke = fct_recode(Smoke, Molto = "Heavy", Mai = "Never", Regol = "Regul")) %>% rename("Fuma" = Smoke)
Script di esempio
- fct_recode.R
library(MASS) data(survey) library(tidyverse) survey$Smoke <- fct_recode(survey$Smoke, Molto = "Heavy", Mai = "Never", Regol = "Regul") # oppure livelli <- c(Molto = "Heavy", Mai = "Never", Regol = "Regul") survey$Smoke <- fct_recode(survey$Smoke, !!! livelli) # con mutate survey <- survey %>% mutate(Smoke = fct_recode(Smoke, Molto = "Heavy", Mai = "Never", Regol = "Regul"))
r/tidyverse/forcats_fct_recode.txt · Ultima modifica: 11/08/2025 14:40 da Agnese Vardanega