HW 04 - tidyr

Data di consegna: martedì 28 ottobre 2025

Introduzione

In questo compito utilizzerai i comandi utili per:

  • organizzare una tabella in formato long
  • organizzare una tabella in formato wide
  • effettuare l’operazione di join tra due tabelle
  • effettuare alcune operazioni di unione tra tabelle

Obiettivi di apprendimento

Lo svolgimento di questo compito ti permetterà di:

  • usare R per organizzare una tabella in output nel formato opportuno a seconda delle esigenze di presentazione
  • usare R per integrare dati presenti su fonti diverse
  • usare R per rispondere ad alcune domande del management di un’azienda di eCommerce
  • usare R per rispondere ad alcune domande del management di un’ateneo italiano

Istruzioni per l’uso

  • Crea un progetto associandolo ad una cartella “RLab_hw04_cognome_nome” sul tuo disco: nel mio caso il nome della cartella sarebbe “RLab_hw04_vistocco_domenico”

Esercizi

  • Rispondi ai vari punti salvando le risposte in tre file R separati per ciascuna delle tre parti con il nome “hw04-parte-XX_cognome_nome.R”: ad esempio nel mio caso il nome del file associato alla prima parte del compito sarebbe “hw04-parte-01_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).

NoteNota

Ricordati di utilizzare i commenti per eventuali risposte aperte se presenti.

Parte 1: Analisi degli ordini di un’azienda di eCommerce

Copia all’interno della cartella associato al progetto di questa settimana i file che trovi su questa cartella compressa: dati-eCommerce.zip.

NoteDescrizione dei dati eCommerce

Nella cartella compressa sono presenti i seguenti quattro file relativi ad un’azienda che opera nel settore dell’eCommerce:

  1. eCommerce-CustomerMD.csv: identificativo e paese dei clienti
  2. eCommerce-ProductMD.csv: identificativo, descrizione, categoria e sottocategoria dei prodotti
  3. eCommerce-TransactionsHistory.xlsx: storico degli ordini con informazioni relative all’identificativo ai singoli ordini. Per ciascun ordine sono riportati l’identificativo del prodotto, la quantità acquistata, il prezzo unitario e la data dell’ordine
  4. eCommerce-TransactionsL3M.xlsx: ordini relativi agli ultimi tre mesi. La struttura è equivalente a quella del file con lo storico degli ordini
  1. Importa le quattro tabelle dati in R uniformando i nomi delle tabelle sfruttando la funzione clean_names {janitor}

  2. Sfruttando un’oportuna operazione di insieme (intersect, union, union_all, setdiff o symdiff) crea una tabella degli ordini integrando i dati storici con i dati relativi agli ultimi tre mesi

  3. Sfruttando un’opportuna operazione di join tra le tabelle integra i dati degli ordini con le informazioni presenti nelle tabelle degli ordini e dei prodotti. Poiché l’obiettivo è di effettuare un’analisi dell’andamento degli ordini fa in modo di conservare nella tabella finale tutti gli ordini presenti

  4. Quali sono i dieci prodotti più venduti dell’azienda, ovvero quelli che generano il fatturato più alto?

TipSuggerimento

Per rispondere aggiungi alla tabella una colonna sales ottenuta moltiplicando le colonne quantity (quantità vendute) e price (prezzo unitario)

  1. Quali sono i primi tre prodotti di ogni sottocategoria merceologica?
TipSuggerimento

Per rispondere, oltre ai verbi di manipolazione di dplyr, puoi sfruttare la funzione slice_head disponibile nello stesso package

  1. Quali sono i cinque paesi in cui l’azienda effettua meno vendite?

  2. Quali sono i cinque paesi in cui l’azienda effettua meno vendite per ogni sottocategoria merceologica?

  3. Durante l’ultimo anno solare per cui sono disponibili i dati, quanti ricavi sono stati generati in totale nell’ambito di ogni categoria?

  4. Qual è il peso percentuale di ogni categoria sul portafoglio totale di prodotti per l’anno in corso?

TipSuggerimento

Puoi calcolare il peso percentuale di ciascuna categoria come rapporto tra l’ammontare delle vendite della categoria e l’ammontare di vendite totale nel periodo considerato, moltiplicando il risultato per 100. Sfrutta a tale scopo in maniera combinata le funzioni group_by e mutate

  1. Sulla base dei dati storici, quali sono i tre mesi dell’anno in cui l’azienda deve aspettarsi un picco di vendite per le categorie stagionali (sottocategorie: Christmas, Easter e Summer)?

Parte 2: Manipolazione dei dati relativi agli indicatori degli atenei italiani

Copia all’interno della cartella associato al progetto di questa settimana i file che trovi su questa cartella MS-Excel: indicatori-anvur-ateneo_2024.xlsx.

  1. Importa le tabelle presenti nei quattro fogli di lavoro, uniformando i nomi di colonna sfruttando la funzione clean_names {janitor}, eliminando le colonne ambito ed id_anno ad aggiungendo una colonna sezione con un valore costante associato alla sezione degli indicatori, ovvero, a seconda della particolare tabella: Bilancio, Cittadinanza, Didattica e Personale

  2. Unisci le quattro tabelle relative a ciascuna sezione di indicatori in una tabella indicatori_2024

  3. Aggiungi alla tabella una colonna indicatore calcolando il rapporto tra le colonne numeratore e denominatore e mantieni nella tabella solo gli indicatori calcolati eliminando le colonne numeratore e denominatore

  4. Effettua un’imputazione dei valori mancanti utilizzando i valori medi degli indicatori per dimensione (dimensioni) e macro-regione (regione_macro)

TipSuggerimento

Sfrutta in maniera opportuna le funzioni group_by {dplyr}, mutate {dplyr} e if_else {dplyr}

  1. Crea una tabella in cui riporti sulle righe le macro regioni (regioni-macro) e sulle colonne il numero totale di iscritti (indicatore Numero iscritti, sezione Didattica), il numero totale di immatricolati (indicatore Numero immatricolati, sezione Didattica) e l’età media dei docenti (indicatore Età media docenti, sezione Personale)

  2. Crea una tabella atenei_napoli conservando solo i dati relativi ai seguenti atenei: Napoli Benincasa, Napoli Federico II, Napoli L’Orientale e Napoli Parthenope

  3. A partire dalla tabella ottenuta al punto precedente, costruisci una tabella in cui sulle righe consideri riporti i seguenti indicatori della sezione Didattica: Numero iscritti, Numero laureati, Rapporto Iscritti / Docenti, sulle colonne i quattro atenei e nelle celle i valori degli indicatori corrispondenti a ciascun incrocio

Parte 3: dataset relativi al paper Tidy data

Leggi il paper Tidy data disponibile su questo link: nella lettura concentrati sulla descrizione del problema ma tralascia il codice R che è molto datato per cui le funzioni indicate nel paper sono deprecated o non più supportate.

  1. Importa la tabella pew_table_4.csv2 (tabella 4 del paper) e scrivi il codice utile a riportarla in formato tidy, come descritto nel paper

  2. Importa la tabella billboard_table_7.csv (tabella 7 del paper) e scrivi il codice utile a riportarla in formato tidy, come descritto nel paper

  3. Importa la tabella weather_table_11.xlsx (tabella 11 del paper) e scrivi il codice utile a riportarla in formato tidy, come descritto nel paper

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 - 20 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↩︎