Vai al contenuto principale

Livelli dei fattori in R

Questo tutorial riprende materiale dal corso gratuito Intro to R di DataCamp e ti permette di esercitarti con i fattori.
Aggiornato 29 set 2026  · 6 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Se vuoi seguire il nostro corso gratuito Intro to R, ecco il link.

Livelli dei fattori

Quando ottieni un dataset per la prima volta, spesso noterai che contiene fattori con specifici livelli. Tuttavia, a volte vorrai cambiare i nomi di questi livelli per maggiore chiarezza o per altri motivi. R ti permette di farlo con la funzione levels():

levels(factor_vector) <- c("name1", "name2",...)

Un buon esempio è costituito dai dati grezzi forniti da un sondaggio. Una domanda comune in ogni questionario riguarda il sesso della persona che risponde. Qui, per semplicità, sono state registrate solo due categorie, "M" e "F". (Di solito servono più categorie per i dati da sondaggio; in ogni caso, si usa un fattore per memorizzare i dati categoriali.)

survey_vector <- c("M", "F", "F", "M", "M")

Registrare il sesso con le abbreviazioni "M" e "F" può essere comodo se stai raccogliendo dati con carta e penna, ma può creare confusione in fase di analisi. A quel punto, spesso vorrai cambiare i livelli del fattore in "Male" e "Female" invece di "M" e "F" per maggiore chiarezza.

Attenzione: l'ordine con cui assegni i livelli è importante. Se digiti levels(factor_survey_vector), vedrai che restituisce [1] "F" "M". Se non specifichi i livelli del fattore quando crei il vettore, R li assegnerà automaticamente in ordine alfabetico. Per mappare correttamente "F" a "Female" e "M" a "Male", i livelli devono essere impostati su c("Female", "Male"), in questo ordine.

Istruzioni

  • Guarda il codice che costruisce un vettore fattoriale a partire da survey_vector. Dovresti usare factor_survey_vector nella prossima istruzione.
  • Cambia i livelli del fattore di factor_survey_vector in c("Female", "Male"). Fai attenzione all'ordine degli elementi del vettore.
# no pec survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Code to build factor_survey_vector survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Specify the levels of factor_survey_vector levels(factor_survey_vector) <- factor_survey_vector # Code to build factor_survey_vector survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) # Specify the levels of factor_survey_vector levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector msg = "Do not change the definition of survey_vector!" test_object("survey_vector", undefined_msg = msg, incorrect_msg = msg) msg = "Do not change or remove the code to create the factor vector." test_function("factor", "x", not_called_msg = msg, incorrect_msg = msg) # MC-note: ideally would want to test assign operator <-, and have it highlight whole line. # MC-note: or negate this test_student_typed, to highlight where they type this incorrect phrase # test_student_typed('c("Male", "Female")') test_object("factor_survey_vector", eq_condition = "equal", incorrect_msg = paste("Did you assign the correct factor levels to factor_survey_vector? Use levels(factor_survey_vector) <- c(\"Female\", \"Male\"). Remember that R is case sensitive!")) success_msg("Wonderful! Proceed to the next exercise.")

Fai attenzione all'ordine in cui devi digitare i livelli del fattore. Suggerimento: guarda l'ordine in cui i livelli vengono stampati quando digiti levels(factor_survey_vector).

Riepilogare un fattore

Dopo aver terminato questo corso, una delle tue funzioni preferite in R sarà summary(). Ti darà una panoramica rapida del contenuto di una variabile:

summary(my_var)

Tornando al nostro sondaggio, vorresti sapere quante risposte "Male" hai nel tuo studio e quante risposte "Female". La funzione summary() ti dà la risposta a questa domanda.

Istruzioni

Richiedi un summary() di survey_vector e factor_survey_vector. Interpreta i risultati di entrambi i vettori. In questo caso sono ugualmente utili?

# Build factor_survey_vector with clean levels survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector # Generate summary for survey_vector # Generate summary for factor_survey_vector # Build factor_survey_vector with clean levels survey_vector <- c("M", "F", "F", "M", "M") factor_survey_vector <- factor(survey_vector) levels(factor_survey_vector) <- c("Female", "Male") factor_survey_vector # Generate summary for survey_vector summary(survey_vector) # Generate summary for factor_survey_vector summary(factor_survey_vector) msg = "Do not change anything about the first few lines that define survey_vector and factor_survey_vector." test_object("survey_vector", undefined_msg = msg, incorrect_msg = msg) test_object("factor_survey_vector", eq_condition = "equal", undefined_msg = msg, incorrect_msg = msg) msg <- "Have you correctly used summary() to generate a summary for %s?" test_output_contains("summary(survey_vector)", incorrect_msg = sprintf(msg, "survey_vector")) test_output_contains("summary(factor_survey_vector)", incorrect_msg = sprintf(msg, "factor_survey_vector")) success_msg("Nice! Have a look at the output. The fact that you identified \"Male\" and \"Female\" as factor levels in factor_survey_vector enables R to show the number of elements for each category.")

Chiama la funzione summary() sia su survey_vector sia su factor_survey_vector, è tutto qui!

Fattori ordinati

Poiché "Male" e "Female" sono livelli di fattore non ordinati (o nominali), R restituisce un messaggio di avviso informandoti che l'operatore maggiore di non ha significato. Come visto in precedenza, R assegna lo stesso valore ai livelli per fattori di questo tipo.

Ma non è sempre così! A volte lavorerai anche con fattori che hanno un ordine naturale tra le categorie. In questo caso, dobbiamo assicurarci di passare questa informazione a R...

Supponiamo che tu stia guidando un team di ricerca composto da cinque data analyst e che tu voglia valutarne le prestazioni. Per farlo, ne monitori la velocità, valuti ciascun analyst come "slow", "medium" o "fast" e salvi i risultati in speed_vector.

Istruzioni

Come primo passo, assegna a speed_vector un vettore con 5 elementi, uno per ciascun analyst. Ogni elemento deve essere "slow", "medium" o "fast". Usa l'elenco seguente:

  • L'analyst 1 è medium,
  • l'analyst 2 è slow,
  • l'analyst 3 è slow,
  • l'analyst 4 è medium e
  • l'analyst 5 è fast.

Non è ancora necessario specificare che si tratta di fattori.

# Create speed_vector speed_vector <- # Create speed_vector speed_vector <- c("medium", "slow", "slow", "medium", "fast") test_object("speed_vector", incorrect_msg = "speed_vector should be a vector with 5 entries, one for each analyst's speed rating. Don't use capital letters; R is case sensitive!") success_msg("A job well done! Continue to the next exercise.")

Assegna a speed_vector un vettore contenente le stringhe di caratteri "slow", "medium" o "fast".


Se vuoi imparare di più da questo corso, ecco il link.

Dai un'occhiata al tutorial sui fattori in R.

Argomenti
R
Data Science
Analisi dei dati

Corsi R

Corso

Introduzione a R

4 ore
3.1M
Impara le basi dell'analisi dei dati in R, compresi vettori, liste e data frame, e fai pratica con R con set di dati reali.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro