HW 03 - La grammatica per la data manipulation

Data di consegna: lunedì 14 ottobre 2024

Introduzione

In questo compito utilizzerai i comandi utili per:

  • creare nuove variabili a partire da variabili esistenti
  • ricodificare una variabile
  • categorizzare una variabile in gruppi
  • costruire tabelle di frequenza univariate e bivariate
  • selezionare un sottoinsieme di variabili
  • selezionare un sottoinsieme di unità
  • calcolare statistiche di sintesi sull’intero insieme e su gruppi di dati

Obiettivi di apprendimento

Lo svolgimento di questo compito ti permetterà di:

  • usare R per aggiungere alla tabella nuove variabili sulla base di quelle disponibili
  • usare R per codificare e categorizzare le variabili di una tabella
  • creare sintesi tabellari e numeriche di un insieme di dati

Istruzioni per l’uso

  • Crea un progetto associandolo ad una cartella “RLab_hw03_cognome_nome” sul tuo disco: nel mio caso il nome della cartella sarebbe: “RLab_hw03_vistocco_domenico” e copia all’interno della cartella il seguente file: zambia_height92.csv.
Descrizione del dataset

Una descrizione sul contenuto del file con la corrispondente legenda delle variabili è disponibile qui

  • Rispondi ai vari punti salvando le risposte in un file R con il nome “hw03_cognome_nome.R”: ad esempio nel mio caso il nome del file sarebbe “hw03_vistocco_domenico.R”.

  • Per rispondere ad ogni punto inserisci un’etichetta di sezione (che puoi inserire nello script usando la combinazione di testi CTRL/CMD + SHIFT + R) utilizzando il punto cui sta rispondendo. Ad esempio, per rispondere al punto 1 del compito, usa un’etichetta di sezione:

    # PUNTO 1 ------------------------------------------------
  • Utilizza i commenti per rispondere alle domande in cui viene chiesta un’interpretazione da parte tua: lo script deve cioè essere funzionante quando si eseguono tutti i comandi con il pulsante Source.

  • Lo script viene valutato sia in base alla correttezza del codice che in base alla qualità (stile utilizzato per rendere lo script leggibile ed ordinato).

Esercizi

Nota

Ricordati di utilizzare i commenti per le risposte aperte.

Parte 1: Importazione e codifica dei dati

  1. Importa il file “zambia_height92.csv” nell’oggetto zambia_height

  2. Esplora il dataset zambia_height usando la funzione skim (package skimr)

  3. Riordina le colonne del dataset posizionando all’inizio le due colonne district e region

Suggerimento

Sfrutta le funzioni setNames e str_replace

  1. Rinomina le colonne c_gender, c_breastf e c_age sostituendo child_ a c_ nei tre nomi
Suggerimento

Sfrutta la funzione names per estrarre i nomi degli oggetti, la funzione str_replace per cercare un pattern di testo e sostituirlo all’esistente, e la funzione set_names per reimpostare i nomi della tabella

  1. Rinomina le colonne m_agebirth, m_height, m_bmi, m_education e m_work sostituendo mother_ a m_ nei cinque nomi

  2. Ricodifica la variabile child_gender sostituendo le etichette testuali ai codici numerici (per dettagli vedi legenda del dataset)

  3. Ricodifica la variabile mother_education sostituendo le etichette testuali ai codici numerici (per dettagli vedi legenda del dataset)

Suggerimento

Utilizza una variabile di tipo factor per gestire propriamente l’ordine delle modalità

  1. Ricodifica la variabile mother_work sostituendo le etichette testuali ai codici numerici (per dettagli vedi legenda del dataset)

  2. Ricodifica la variabile region sostituendo le etichette testuali ai codici numerici (per dettagli vedi legenda del dataset)

  3. Trasforma la variabile district in una variabile stringa aggiungendo al numero del distretto il prefisso “district nr.”

Suggerimento

Sfrutta la funzione paste che permette di concatenare due stringhe, in combinazione con la fuzione mutate

  1. Ordina il dataset in senso crescente rispetto al totolo di studio della madre e, a parità di titolo di studio, in senso decrescente rispetto alla variabile z_score

Parte 2: Creazione di nuove variabili

  1. Aggiungi al dataset la colonna c_age_years calcolando l’eta dei bambini in anni, trasformando opportunamente la colonna c_age

  2. Aggiungi al dataset la colonna bmi_log calcolando il logaritmo della colonna m_bmi

  3. Aggiungi al dataset una variabile bmi_eq_size che contiene la categorizzazione in 5 cinque classi di uguale ampiezza della variabile mother_bmi

Suggerimento
  • Sfrutta la funzione table per esplorare la categorizzazione ottenuta
  • Sfrutta la funzione class per esplorare la tipologia di oggetto ottenuto
  1. Aggiungi al dataset una variabile bmi_eq_count ra che contiene la categorizzazione in 5 cinque classi di uguale frequenza della variabile mother_bmi
Suggerimento
  • Sfrutta la funzione table per esplorare la categorizzazione ottenuta
  • Sfrutta la funzione class per esplorare la tipologia di oggetto ottenuto
  1. Aggiungi al dataset una variabile bmi_pers_group che contiene la categorizzazione della variabile mother_bmi nelle seguenti 5 classi: \[10, 15), \[15, 25), \[25, 35), \[35, 40)
Suggerimento
  • Sfrutta la funzione table per esplorare la categorizzazione ottenuta
  • Sfrutta la funzione class per esplorare la tipologia di oggetto ottenuto

Parte 3: Operazioni di selezione e filtro

  1. Salva in un oggetto male_child i dati relativi ai soli bambini di sesso maschile presenti nel dataset

  2. Salva in un oggetto female_working i dati relativi alle sole bambine di sesso femminile le cui madri lavorano

  3. Salva in un oggetto male_working_but_all_female i dati relativi a tutte le bambine di sesso femminile e ai soli bambini di sesso maschile le cui madri lavorano

  4. Crea un dataset ridotto con le sole variabili di tipo numerico salvandolo nell’oggetto var_numeriche convertendo in lettere maiuscole tutti i nomi delle variabili

Suggerimento

Sfrutta le funzioni set_names e toupper per rispondere alla parte relativa ai nomi delle variabili

  1. Esegui l’operazione di centratura su tutte le variabili presenti nell’oggetto var_numeriche ottenuto al punto precedente salvando il risultato nell’oggetto dati_centrati
Suggerimento

Sfrutta la funzione scale in combinazione con la funzione mutate (consulta l’help della funzione per dettagli sul funzionamento)

  1. Esegui l’operazione di standardizzazione su tutte le variabili numeriche presenti nell’oggetto zambia_height ottenuto al punto precedente salvando il risultato nell’oggetto dati_standardizzati
Suggerimento
  • Sfrutta la funzione scale in combinazione con la funzione mutate (consulta l’help della funzione per dettagli sul funzionamento)
  • A differenza del punto precedente, rispondi qui partendo dall’oggetto zambia_height e non dall’oggetto var_numeriche

Parte 4: Tabelle di frequenza

  1. Costruisci una tabella di frequenza univariata per la variabile mother_education
Suggerimento

Sfrutta la funzione tabyl del pacchetto janitor

  1. Costruisci una tabella di frequenza a doppia entrata incrociando le variabili mother_education e mother_work riportando le frequenze assolute

  2. Costruisci una tabella di frequenza a doppia entrata incrociando le variabili mother_education e mother_work riportando le frequenze percentuali rispetto al gran totale

  3. Costruisci una tabella di frequenza a doppia entrata incrociando le variabili mother_education e mother_work riportando i profili riga (distribuzioni condizionate in frequenze percentuali della variabile in colonna)

  4. Costruisci una tabella di frequenza a doppia entrata incrociando le variabili mother_education e mother_work riportando i profili colonna (distribuzioni condizionate in frequenze percentuali della variabile in riga)

Parte 5: Calcolo di statistiche di sintesi

  1. Costruisci una tabella di frequenza univariata per mother_education sfruttando la funzione count {dplyr}

  2. Costruisci una tabella di frequenza univariata per mother_education sfruttando la funzione tally {dplyr}

Suggerimento

Sfrutta la funzione group_by per raggruppare i dati rispetto alla variabile di interesse

  1. Costruisci una tabella di frequenza univariata per mother_education sfruttando le funzioni summarise {dplyr} e n {dplyr}
Suggerimento

Sfrutta la funzione group_by per raggruppare i dati rispetto alla variabile di interesse

  1. Costruisci una tabella di frequenza univariata per mother_education usando uno dei tre approcci utilizzati ai punti 28, 29 e 30 ma ordinando le modalità in senso decrescente rispetto alle corrispondenti frequenze assolute

  2. Calcola media, mediana, scarto quadratico medio, indice di asimmetria ed indice di curtosi della variabile z_score, sfruttando le funzioni di R base

Suggerimento

Per l’indice di asimmetria sfrutta la funzione skeweness e per l’indice di curtosi sfrutta la funzione kurtosis, entrambe disponibili nel package moments

  1. Calcola media, mediana, scarto quadratico medio, indice di asimmetria ed indice di curtosi della variabile z_score, sfruttando il verbo summarise del package dplyr

  2. Calcola media, mediana, scarto quadratico medio, indice di asimmetria ed indice di curtosi della variabile z_score in corrispondenza dei vari livelli della variabile mother_education, sfruttando i verbi di tidyverse

  3. Calcola la media della variabile z_score in corrispondenza dei vari livelli delle variabili mother_education e mother_work, sfruttando i verbi di tidyverse

  4. Calcola le medie di tutte le variabili numeriche contenute nell’oggetto zambia_height, sfruttando i verbi di tidyverse

  5. Calcola le medie di tutte le variabili contenute nell’oggetto dati_centrati, sfruttando i verbi di tidyverse

  6. Calcola le medie e gli scarti quadratici medi di tutte le variabili numeriche contenute nell’oggetto zambia_height, sfruttando i verbi di tidyverse

  7. Calcola le medie e gli scarti quadratici medi di tutte le variabili contenute nell’oggetto dati_standardizzati, sfruttando i verbi di tidyverse

  8. Salva il contenuto dell’intero workspace su un file analisi_dati_zambia.RData nella directory corrente

Consegna

Per inviare la tua soluzione:

  • Salva il file .R con le tue soluzioni
  • Chiudi il progetto RStudio
  • Comprimi in un file .zip la cartella associata al progetto
  • Carica il file .zip salvato in risposta al compito assegnato su Teams

Valutazione

Totale punti disponibili: 110 punti

Component Punti
Es 1 - 35 100
Workflow & formattazione 101

Footnotes

  1. La valutazione al “Workflow & formattazione” tiene conto del principio di riproducibilità del codice: lo script caricato deve funzionare senza errori su qualunque PC dando gli stessi risultati↩︎