########################################################################## # Laboratorio di Analisi delle Serie Storiche con R # Prof.ssa Lea Petrella # Facolta' di Economia # Dipartimento Metodi e Modelli per l'Economia il Territorio e la Finanza # Sapienza Universita' di Roma # a.a. 2017-2018 # valentina.raponi@uniroma1.it ########################################################################## # Lezione 2: INTRODUZIONE ALL'USO DI R (Parte 2) ########################################################################## # # Indice: # * estrazione/selezione di elementi # * ordinamenti in R # * dataframe # * importazione dei dati # * statistiche descrittive # * rappresentazione grafica dei dati # * fine 2a parte ---> salviamo tutto! # ########################################################################## Riprendiamo gli oggetti definiti nel Laboratorio 1: v1=seq(1,10) v1 matrice1=matrix(c(1:20),nrow=5,ncol=4) matrice1 # ricordiamo la funzione paste()... colnames(matrice1)=paste("colonna",1:4,sep="-") # ...stessa cosa per le righe rownames(matrice1)=paste("riga",1:5,sep="-") matrice1 altezza = c(1.75, 1.80, 1.65, 1.90, 1.80, 1.71) peso = c(60, 72, 57, 90, 82, 72) bmi = peso/altezza^2 # Body Mass Index ###########################################################################----------------------------------------------------------------- # * Estrazione/selezione di elementi #----------------------------------------------------------------- # 1. in base a posizione # Estrazione da un oggetto vettore v1 # estrarre l'elemento di posizione 4 di v1 v1[4] # estrarre gli elementi di posizione 1, 3, 6 di v1 v1[c(1,3,6)] # estrarre gli elementi di posizione da 1 a 3 di v1 v1[c(1,2,3)] # oppure... v1[1:3] # posso estrarre piu' volte lo stesso elemento v1[c(rep(1,3),3)] # posso selezionare anche per negazione v1[-c(2,4)] # Estrazione da un oggetto matrice matrice1 # estrarre l'elemento di posizione 2,3 di matrice1 matrice1[2,3] # estrarre tutta la riga 2 di matrice1 riga2=matrice1[2,] riga2 # se non voglio i nomi delle colonne? names(riga2)=NULL riga2 # estrarre tutta la colonna 3 di matrice1 colonna3=matrice1[,3] colonna3 names(colonna3)=NULL colonna3 # estrarre gli elementi di riga 2 e 3 della colonna 4 di matrice1 matrice1[c(2,3),4] # estrarre gli elementi di riga 2 e 3 della colonna 1 e 4 di matrice1 matrice1[c(2,3),c(1,4)] # estrarre gli elementi di posizione (2,1) e (3,4) di matrice1 matrice1[matrix(c(2,3,1,4),nrow=2,ncol=2)] # estrarre la "testa" di una matrice head(matrix(1:50,nrow=10,ncol=5)) # 2. in base ad etichetta (se gli elementi la posseggono) # per estrarre elementi possibile anche sfruttare i nomi della matrice # ...ovvio la matrice deve avere i nomi di riga e colonna! matrice1["riga-2","colonna-3"] matrice1["riga-2",] matrice1[,"colonna-3"] # 3. in base a una condizione "logica" altezza altezza>=180 altezza[altezza >= 1.80] altezza[altezza > 1.75 & altezza < 1.90] altezza[altezza > 1.75 & altezza <= 1.90] matrice1 matrice1>8 maggiore8=matrice1[matrice1 >8] # restituisce un vettore!!! #------------------------------------------- # * Ordinamenti in R #------------------------------------------- # funzione sort() Restituisce il vettore ordinato sort(altezza) sort(altezza, decreasing=T) # funzione order() Restituisce la posizione degli elementi del vettore originale che compongono il vettore ordinato order(altezza) # un'altra funzione che riorganizza "invertendo" l'ordine degli elementi rev(altezza) #Attenzione non ordina! Inverte l'ordine del vettore originale. #----------------------------------------------------------------- # * Data.frame #----------------------------------------------------------------- #Oggetto principe dell'analisi statistica. Formato classico unita' (righe) x variabili (colonne) #Creiamo un data-frame df=data.frame(altezza,peso) #Ogni riga di questo oggetto mi rappresenta una unità statistica su cui ho rilevato altezza e peso #per vedere potremmo aver bisogno del pacchetto rstudio #Creiamo un identificativo per ogni unità id=seq(1,6,1) df1=data.frame(id,altezza,peso) #Come si accede alle variabili di un data frame? #Per posizione df[2] #Restituisce la variabile peso df1[1] #Restituisce la variable id #Per etichetta df$peso #Restituisce la variabile peso df1$id #Restituisce la variabile id #Nomi delle variabili nel dataframe names(df1) # Controllo i nomi #Rimuovere nomi delle variabili names(df1)=NULL #Cambiare nomi delle variabili del dataframe nomi.ing=c("identity","Height","Weight") names(df1)=nomi.ing #Ordinare un dataframe rispetto ad una variabile df.ord=df1[order(altezza),] #Ordino le unità rispetto alla variabile altezza df.ord1=df1[order(peso),] #Ordino le unità rispetto alla variabile peso #Prime statistiche descrittive di un dataframe summary(df1[,2:3]) # Estrarre un sottoinsieme di dati usando la funzione subset help(subset) df1.subset=subset(df1, altezza>=1.80) df2.subset=subset(df1, altezza>=1.80& peso>80) df3.subset=subset(df1, altezza>=1.80 | peso>80) df4.sub=subset(df1, drop(id>3)) # nel caso di valori mancanti df5.sub=subset(df1, is.na(peso)==FALSE) df6.sub=subset(df1, is.na(peso)==FALSE & is.na(altezza)==FALSE) # per selezionare l'intero dataframe omettendo tutti i valori mancanti # possiamo usare la funzione complete.cases() complete.cases(df1) df1[complete.cases(df1),] ###################################### Salvare il tutto! ######################################