Menu
Coddy logo textTech

Gestire i dati mancanti

Lezione 11 di 14 del corso Manipolazione dei dati in R di Coddy.

I valori mancanti sono generalmente rappresentati come <strong>NA</strong> (Non disponibile). Esploriamo le strategie per identificare, rimuovere e imputare i valori mancanti.

Identificare i dati mancanti

Per verificare la presenza di valori mancanti in R, puoi usare le seguenti funzioni:

# Verifica se un valore è NA
is.na(x)

# Conta gli NA in un vettore
sum(is.na(x))

# Identifica le righe con almeno un NA in un data frame
complete.cases(df)

Rimuovere i dati mancanti

Puoi rimuovere le righe con valori mancanti usando questi metodi:

# Rimuovi le righe che contengono almeno un NA
df_clean <- na.omit(df)

# Usa dplyr per rimuovere le righe con NA in colonne specifiche
library(dplyr)
df_clean <- df %>% filter(!is.na(column_name))

Imputare i dati mancanti

L’imputazione consiste nel sostituire i valori mancanti con valori stimati. Ecco alcune tecniche di imputazione comuni:


# Imputazione con la media
df$column[is.na(df$column)] <- mean(df$column, na.rm = TRUE)

# Imputazione con la mediana
df$column[is.na(df$column)] <- median(df$column, na.rm = TRUE)

# Imputazione con la moda per dati categorici
mode_value <- names(sort(table(df$category), decreasing = TRUE))[1]
df$category[is.na(df$category)] <- mode_value
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

challenge icon

Sfida

Medio

Crea una funzione che elabori un set di dati contenente informazioni sui pazienti e sui risultati dei loro esami medici. La funzione deve eseguire le seguenti operazioni:

  1. Convertire la stringa di input in un frame di dati
  2. Individuare e contare il numero di valori mancanti in ogni colonna
  3. Rimuovere le righe con valori mancanti nelle colonne 'age' o 'test_result'
  4. Imputare i valori mancanti nella colonna 'blood_pressure' con il valore mediano
  5. Creare una nuova colonna 'status' in base a 'test_result':
    • Se test_result è mancante, impostare status su "Unknown"
    • Se test_result è inferiore a 50, impostare status su "Normal"
    • Se test_result è pari o superiore a 50, impostare status su "Elevated"
  6. Stampare le seguenti informazioni:
    • Numero di valori mancanti in ogni colonna prima dell'elaborazione
    • Numero di righe rimosse
    • Valore mediano della pressione sanguigna usato per l'imputazione
    • Il frame di dati elaborato

Provalo tu

# Leggi l'input
con <- file("stdin", "r")
input_string <- suppressWarnings(readLines(con))

# Converti la stringa di input in un data frame
data <- read.csv(text = input_string, stringsAsFactors = FALSE)

# TODO: Scrivi il tuo codice qui sotto
# 1. Individua e conta i valori mancanti
# 2. Rimuovi le righe con valori mancanti in 'age' o 'test_result'
# 3. Imputa i valori mancanti in 'blood_pressure'
# 4. Crea la colonna 'status'
# 5. Stampa le informazioni richieste

# Segnaposto per l'output
cat("Missing values in each column before processing:\n")
print(missing_counts)
cat("\nNumber of rows removed:\n")
print(rows_removed)
cat("\nMedian blood pressure used for imputation:\n")
print(median_bp)
cat("\nProcessed data:\n")
print(data_clean)

Tutte le lezioni di Manipolazione dei dati in R

Esercitati da solo: Compilatore R online