class: center, middle, inverse, title-slide # Esercizi ### Stefano Bussolon ### 01/2019 - 11/2019 --- # Usare Swirl ```r install.packages("swirl") library(swirl) swirl() ``` --- ## R come calcolatrice 1. Quanto fa 102 * 13 2. Calcolare la divisione intera e il resto di 102 diviso 7 --- ## Variabili 1. Assegnare alla variabile `nome` il vostro nome, alla variabile `cognome` il cognome. 2. Assegnare alla variabile `x` il valore 102, alla variabile `y` il valore 7. 3. Calcolare x diviso y. 4. Usare `ls()` per elencare le variabili create. 5. Usare `rm()` per eliminare la variabile x. --- ## Operazioni booleane 1. `x <- 55+10<60`. Qual è il valore di x? Rispondete, e poi verificate con R. 2. Qual è il risultato di `x | 13*3 > 12*2`? Perché? ## Help 1. Cercare aiuto sulla funzione `sum()` --- ## Vettori 1. Creare un vettore `sette_nani` con i valori Brontolo, Cucciolo, Dotto, Eolo, Gongolo, Mammolo e Pisolo 2. Attribuire al vettore `sette_nani` l'attributo `favola` con il valore `Biancanenve` --- ## Matrici 1. Generare la seguente matrice 2. Ottenere il numero di righe e colonne 3. Assegnare alle colonne i nomi I, II e III 4. Assegnare alle righe i nomi Alpha, Bravo, Charlie e Delta <table> <thead> <tr> <th style="text-align:left;"> </th> <th style="text-align:right;"> I </th> <th style="text-align:right;"> II </th> <th style="text-align:right;"> III </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Alpha </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:left;"> Bravo </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 6 </td> </tr> <tr> <td style="text-align:left;"> Charlie </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 9 </td> </tr> <tr> <td style="text-align:left;"> Delta </td> <td style="text-align:right;"> 10 </td> <td style="text-align:right;"> 11 </td> <td style="text-align:right;"> 12 </td> </tr> </tbody> </table> --- ## Fattori 1. Creare il fattore con i valori "primo", "dessert", "secondo", "antipasto", "primo", "primo", "secondo", "antipasto", "dessert" 2. Ottenere i livelli del fattore 3. Che tipo di variabile è? --- ## Liste 1. Create una lista con il vostro nome, il cognome, l'età, il segno zodiacale. 2. In un data frame, che tipo di variabili sarebbero? --- ## Data frame 1. Creare il seguente data frame e assegnarlo alla variabile `persone`. 2. Visualizzare la struttura del data frame, le dimensioni e i nomi delle variabili <table> <thead> <tr> <th style="text-align:left;"> nome </th> <th style="text-align:right;"> eta </th> <th style="text-align:left;"> zodiaco </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Antonio </td> <td style="text-align:right;"> 37 </td> <td style="text-align:left;"> Saggitario </td> </tr> <tr> <td style="text-align:left;"> Luisa </td> <td style="text-align:right;"> 28 </td> <td style="text-align:left;"> Gemelli </td> </tr> <tr> <td style="text-align:left;"> Marco </td> <td style="text-align:right;"> 26 </td> <td style="text-align:left;"> Pesci </td> </tr> <tr> <td style="text-align:left;"> Antonella </td> <td style="text-align:right;"> 25 </td> <td style="text-align:left;"> Cancro </td> </tr> <tr> <td style="text-align:left;"> Franco </td> <td style="text-align:right;"> 49 </td> <td style="text-align:left;"> Pesci </td> </tr> <tr> <td style="text-align:left;"> Sandra </td> <td style="text-align:right;"> 40 </td> <td style="text-align:left;"> Gemelli </td> </tr> </tbody> </table> --- ## Estrazione da vettori 1. Creare un vettore numerico di lunghezza 10, ed assegnarlo alla variabile `vettore1`. 2. Selezionare il secondo, il quarto ed il settimo elemento del vettore. 3. Selezionare tutti gli elementi, tranne il primo e il decimo. 4. Selezionate il terzo, il sesto e il nono elemento, utilizzando in maniera *opportunistica* il riuso di un vettore logico. --- ## Estrazione da matrici 1. Creare una matrice 3*5. Assegnare alle righe i nomi "uno", "due", "tre", alle colonne i nomi "a", "b", "c", "d", "e". 2. Estrarre la seconda e la terza cella della seconda riga 3. Estrarre la prima riga 4. Estrarre la colonna "c". Estrarre la riga "due". 5. Estrarre tutte le colonne tranne la seconda. --- ## Estrazione da liste 1. Creare la lista `film_preferito` con gli elementi `titolo`, `regista`, `protagonisti`, `anno` 2. Estrarre l'elemento `protagonisti` 3. Estrarre il terzo elemento della lista. --- ## Estrazione da dataframe 1. Riprendendo il data frame `persone`, estrarre la colonna `eta`. 2. Estrarre i nati sotto il segno dei Pesci (cit.) 3. Estrarre le persone non Toro. 4. Estrarre i Vergine con meno di 40 anni. 5. Estrarre la terza e la quarta riga. 6. Estrarre il nome delle persone la cui età è divisibile per 3, usando la funzione `subset()`. 7. Estrarre gli indici delle persone la cui età è superiore a 40 anni. --- ## Funzioni 1. Generare una sequenza da 8 a 18, e assegnarla al vettore `sequenza`. 2. *Mescolare* l'ordine della sequenza, ed assegnare il risultato al vettore `mescolato`. 3. Riordinare `mescolato` in ordine decrescente, ed assegnarlo alla variabile `decrescente`. 4. *Rovesciare* l'ordine di `mischiato`, ed assegnarlo alla variabile `rovescio`. 5. Estrarre da sequenza 5 valori, a caso, ed assegnarli alla variabile `estratti` 6. Calcolare minimo, massimo, somma, media del vettore `estratti` 7. Creare una matrice 4*2 usando 4 vettori di lunghezza 2. --- 1. Verificare se tutti i valori di `estratti` sono maggiori di 11. 2. Verificare se almeno un valore di `estratti` è maggiore di 15. 3. Estrarre da `sequenza` un secondo vettore, ed assegnarlo alla variabile `estratti2`. 4. Identificare gli elementi comuni ai due vettori, gli elementi che appartengono ad almeno uno dei due vettori, gli elementi che appaiono solo nel primo vettore --- 1. Creare due matrici 4*5 con numeri casuali nel range 10-20, ed assegnarle alle variabili `matrice1` e `matrice2` 2. Sommare, moltiplicare e dividere le due matrici. 3. Trovare la somma degli elementi di `matrice1` 4. Trovare la somma degli elementi di `matrice1` moltiplicati per 2 5. Creare il vettore `somme_righe` con le somme delle righe di `matrice1` 6. Verificare che la lunghezza di `somme_righe` è pari a 4, e la somma è pari alla somma di `matrice1`. 7. Calcolare le medie delle colonne di `matrice2`. --- ## Input output 1. Caricare il file <https://s3.eu-central-1.amazonaws.com/bussolon/dati/oecd_Life_expectancy_at_birth.csv> nel data frame `life_expectancy`. 2. Caricare il file <https://s3.eu-central-1.amazonaws.com/bussolon/dati/popolazione_trentino_totali.tsv> nel data frame `popolazione_trentino`. 1. Caricare il file <https://s3.eu-central-1.amazonaws.com/bussolon/dati/popolazione_trentino_stato_civile.csv> nel data frame `pop_tn_sc` --- ## Leggere database Sqlite Connettersi al database sqlite <https://s3.eu-central-1.amazonaws.com/bussolon/dati/provaR.db>, leggere il nome delle tabelle, e caricare la tabella `usability_1` nel data frame `usability`. --- ## Salvare i dati 1. Salvare il data frame `usability` in un file `csv`. 2. Salvare il data frame `usability` in un file `tsv`. 3. Salvare il data frame `usability` in un file binario `rds`.