Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
X
Y
# "detach": ripristina il comportamento abituale
detach(dati)
# Creare dataframe mediante
# Le funzioni cbind() e rbind()
mat<- matrix(c(5,8,10),2,3)
mat
ri <- 4:6
ri
co <- rep(8,2)
# attacca il vettore "ri" come ulteriore riga di "mat"
rbind(mat,ri)
# attacca il vettore "co" come ulteriore colonna di "mat"
cbind(mat,co)
# creare un dataframe
dati2<-data.frame(cbind(mat,co))
# assegnare nomi alle colonne
colnames(dati2) <- c("variabile1"," variabile2"," variabile3","altro")
# Estrarre numero di righe e di colonne
# numero di righe di "mat"
nrow(mat)
# numero di colonne di "mat"
ncol(mat)
# dimensioni di "mat"
dim(mat)
# numero di elementi in "mat"
length(mat)
# Somma progressiva dei valori di una variabile (utile con valori ordinati)
cumsum(dati2$variabile1)
# Prodotto progressivo dei valori di una variabile
cumprod(dati2$variabile1)
# Somma dei valori di una variabile
sum(dati2$variabile1)
# Prodotto dei valori di una variabile
prod(dati2$variabile1)
# "function" è un nome (di comando R) riservato
somma <- function(a,b) {a+b}
somma(2,3)= 5
for(variabile a valori in un insieme){ esegui i comandi }
x <- 0 # inizializzazione di contatore
for(i in 1:10) {x <- x + i} # un ciclo è dispendioso in termini di tempo
x
sum(1:10) # se è possibile usare funzioni interne ad R
# Cicli indefiniti: while
# Struttura di un ciclo while
# while( la condizione risulta verificata ){ esegui i comandi }
x <- 0 # inizializzazione
while(x < 10) {x <- x+1}
x
x <- 0
while(x < 50000) {x <- x+1} # cicli sono dispendiosi in termini di tempo
##### 13) Scambio di dati con altri software
# avendo salvato in precedenza dati1
load("prova.RData")
write.table(dati, file = "dati.txt", sep = "\t", col.names = NA) # "\t"
tabulatore
# col.names = NA serve a creare un nome anche per la prima colonna di row.names
write.table(dati, file = "dati-excel.txt", sep = "\t", col.names = NA, dec=",")
write.table(dati, file = "dati-excel.xls", sep = "\t", col.names = NA, dec=",")
# N.B.: la versione italiana di excel usa la "," come separatore di decimali
# per re-importare un file generato da Excel
read.delim("dati-excel.xls",dec=",") # dec="," è riferito al file di ingresso
# row.names è utile per specificare dove si trovano le etichette delle righe
read.delim("dati-excel.xls",dec=",",row.names=1)
?read.table # per un help completo su come importare file di testo
?write.table # per un help completo su come esportare file di testo
# input/output di dati da SAS, SPSS, Stata e altri
library(foreign)
# output in formato TeX e HTML di dati e tabelle
library(xtable)
# Salvare l'output dei comandi di R
# INIZIO: tutto l'output di R verrà registrato nel file R-out.txt
sink("R-out.txt")
load("prova.RData")
dati
cat("\n") # spazio nella visualizzazione
str(dati)
sink() # FINE: il file viene chiuso
# Salvare la lista dei comandi
savehistory() # per salvarla
loadhistory() # per caricarla
# Utilizzare script esterni
# in un semplice file di testo si possono elencare dei comandi e
# chiedere ad R di eseguirli in sequenza
source("script.R")
# importare i dati necessari da excel
library(readxl)
store.df=read_excel("Weekly_sales.xlsx")
View(store.df)
# La vb country non è importata come fattore, occorre convertire
store.df$country=as.factor(store.df$country)
# by(): calcolare una funzione per gruppi
by(store.df$p1sales, store.df$storeNum, mean)
# aggregate(): creare un vettore ottenuto aggregando una variabile secondo una
# funzione
storeMean = aggregate(store.df$p1sales, by=list(store=store.df$storeNum), mean)
storeMean
storeMean2=aggregate(store.df$p1sales,
by=list(store=store.df$storeNum,country=store.df$country), mean)
storeMean2
names(storeMean2)=c("store","country","mean.sales")
# Aggregare con somma
p1sales.sum = aggregate(store.df$p1sales,
by=list(country=store.df$country), sum)
# Disegnare una mappa del mondo con la funzione rworldmap()
install.packages("rworldmap")
library(rworldmap) # Ricordarsi di installare la libreria
library(RColorBrewer)
# come installare un pacchetto
install.packages("datasets")
# caricare un pacchetto
library(datasets)
# chiedere aiuto ad R
help(datasets)
# caricare un dataset presente in un pacchetto
dati<-mtcars
# solo per dataset presenti nei pacchetti:
# ispezionare le variabili presenti nel dataframe
?mtcars
# descrivere il dataset: quante unità di analisi? Quante variabili?
# descrizione delle variabili
# cyl:
# mpg:
# am:
# ispezionare la struttura dei dati
str(dati)
# Accedere agli elementi di oggetti complessi di un dataframe
# mostrare la variabile am del dataset dati
dati$am
# mostrare il primo elemento della variabile am
dati$am[1]
# attach e detach servono a non ripetere dati$
attach(dati)
###########################################
# 1) Distribuzioni di frequenza
###################################
# frequenze assolute
table(am)
# frequenze relative
table(am)/length(am)
length(am)
# frequenze percentuali
table(am)/length(am)*100
# salvare la tabella di frequenza in un dataframe a parte
tab1<-data.frame(table(am)/length(am))
# frequenze cumulate
cumsum(table(am))
# frequenze cumulate
cumsum(table(cyl))
suddividere un carattere in classi
# classi di uguale ampiezza
table(cut(mpg, breaks = 3))
# ampiezza diversa
table(cut(mpg, breaks=c(10,20,30,35)))
# definire i punti estremi delle classi
classi <- c(10,20,30,35)
# classi chiuse a destra (default)
table(cut(mpg, br=classi))
# classi chiuse a sinistra
table(cut(mpg, br=classi, right=FALSE))
############
### 2) Rappresentazioni grafiche
###########
########## grafico a torta
am_factor <- factor(am)
levels(am_factor) <- c("Automatic","Manual")
pie(table(am_factor))
# grafico a torta (2)
pie(table(am_factor), density=15, col=1:4)
# diagramma a bastoncini
plot(table(am_factor),ylim = c(0, 25))
# diagramma a barre
plot(factor(gear))
# Migliorare l'aspetto del grafico a barre
?barplot
barplot(table(cyl),space=1,col="darkred",xlab="cilindri",ylab="frequenze
assolute")
#################### Istogramma
hist(mpg, br=classi)
# modificare gli assi
hist(mpg, br=classi,xlim = c(0, 40),ylim = c(0, 0.1))
# informazioni aggiuntive comprese le densità
# relativamente alle frequenze relative
hist(mpg,br=classi,plot=FALSE)
# istogramma con le frequenze
hist(mpg, br=classi, freq=TRUE) # R ci metterà in guardia per avere classi non
equiampie
# ?hist (TRUE if and only if breaks are equidistant)
# classi
hist(mpg,br=classi,xlim = c(10, 40),ylim = c(0, 0.06))
# tre classi di stessa ampiezza
hist(mpg,br=3)
# cinque classi di stessa ampiezza
hist(mpg,br=5)
# frequenza assoluta
hist(mpg,br=3,freq=TRUE)
# densità relative
hist(mpg,br=3,freq=FALSE)
# classi ottenute con il metodo di Sturges: 1+10/3*log10(n)
hist(mpg,br="Sturges")
# Migliorare l'aspetto dell'istogramma
# Aggiungere i nomi degli assi
hist(mpg, br=3,freq=FALSE,
main="Distribuzione delle Auto per classi di consumo",
xlab="Consumi (miglia al gallone)",
ylab="Densità" )
# Rendere l'istogramma colorato
hist(mpg, br=3,freq=FALSE,
main="Distribuzione delle Auto per classi di consumo",
xlab="Consumi (miglia al gallone)",
ylab="Densità",
col="lightblue") # colore delle barre
# Aggiungere la curva della densità
hist(mpg, br=3,freq=FALSE,
main="Distribuzione delle Auto per classi di consumo",
xlab="Consumi (miglia al gallone)",
ylab="Densità",
col="lightblue")
lines(density(mpg, bw=10), # bw = smoothing
type="l", col="darkred", lwd=2) # lwd = spessore della linea
# avendo utilizzato il comando attach(), occorre sempre concluderlo
detach(dati)
rm(list=ls(all=TRUE))
# importare dati di formati differenti
# libreria che contiene funzioni di importazione dati
# da formati prodotti da altri software
library(foreign)
# definire la working directory
#(cartella del computer in cui si intende lavorare) esempio:
setwd("C:\\Users\\ ")
# oppure
setwd("C:/Users/")
# NOTA: per controllare la working directory
getwd()
# importare i dati in formato csv
dati<-read.csv("viaggi_ISTAT.csv") #NOTA: utilizzo dell’opzione sep=””
# creazione di un subset senza dati mancanti
dati<-dati[complete.cases(dati),]
# eliminare i numeri di riga dal dataset importato
rownames(dati) <- NULL
attach(dati)
# grafico delle frequenze cumulate della variabile
breaks<-c(0,5,10,15,25,35)
freq<-table(cut(durata,breaks))
freq
freq_cum<-c(0,cumsum(freq))
freq_cum
plot(breaks,freq_cum,pch=16,main="Durata del viaggio", xlab="Giorni",
ylab="Frequenza cumulata")
lines(breaks,freq_cum)
############
### 2) Sintesi della distribuzione:
### Descrivere la forma e la posizione della distribuzione
###########
# restituisce il minimo di spesa_giorn
min(spesa_giorn)
# restituisce il massimo di spesa_giorn
max(spesa_giorn)
# restituisce il range (campo di variazione) di spesa_giorn
range(spesa_giorn)
# restituisce la media aritmetica di spesa_giorn
mean(spesa_giorn)
# restituisce la mediana di spesa_giorn
median(spesa_giorn)
# calcolare la mediana per caratteri qualitativi
# necessario scaricare e installare il pacchetto labstatR
install.packages("labstatR")
library(labstatR) # serve per la funzione Me()
eta_classi <- ordered(eta_classi, levels = c("<=14 anni", "15-24 anni", "25-44
anni", "> 45 anni"))
sort(eta_classi)
# calcola la mediana per caratteri qualitativi (labstatR)
Me(eta_classi)
# Non esiste una funzione diretta per il calcolo della media geometrica
exp(mean(log(spesa_giorn)))
# Percentili (Quantili)
quantile(spesa_giorn) # default = 0:4*0.25
# restituisce i quantili in spesa_giorn in corrispondenza<