Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Statistica di base R, Sintesi del corso di Statistica

Appunti presi a lezione e trascritti

Tipologia: Sintesi del corso

2019/2020

Caricato il 28/06/2023

antonio-sacchetti-2
antonio-sacchetti-2 🇮🇹

4

(1)

2 documenti

1 / 20

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Primi elementi di statistica con R
January 22, 2018
Contents
1 Installare R 2
2 Introduzione 2
2.1 Laconsole................................................. 2
2.2 Ilfilescript ................................................ 4
2.3 Comesalvare ............................................... 4
2.4 Installazionedeipacchetti........................................ 4
2.5 Introdurregliinput............................................ 5
3 Gli oggetti in R 7
3.1 Ivettori .................................................. 7
3.1.1 Creareivettori.......................................... 7
3.1.2 Operazioni e confronti tra vettori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.3 Gestire i vettori e rimuovere i valori mancanti . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Ifattori .................................................. 12
3.3 Lematrici................................................. 13
3.3.1 Operazionitramatrici...................................... 14
3.4 Gliarray.................................................. 16
3.5 Idataframe................................................ 17
4 Caricare dati da fonti esterne 19
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14

Anteprima parziale del testo

Scarica Statistica di base R e più Sintesi del corso in PDF di Statistica solo su Docsity!

Primi elementi di statistica con R

 - January 22, 
  • 1 Installare R Contents
  • 2 Introduzione
    • 2.1 La console
    • 2.2 Il file script
    • 2.3 Come salvare
    • 2.4 Installazione dei pacchetti
    • 2.5 Introdurre gli input
  • 3 Gli oggetti in R
    • 3.1 I vettori
      • 3.1.1 Creare i vettori
      • 3.1.2 Operazioni e confronti tra vettori
      • 3.1.3 Gestire i vettori e rimuovere i valori mancanti
    • 3.2 I fattori
    • 3.3 Le matrici
      • 3.3.1 Operazioni tra matrici
    • 3.4 Gli array
    • 3.5 I data frame
  • 4 Caricare dati da fonti esterne

1 Installare R

E’ possibile scaricare gratuitamente la versione pi`u recente di R dal sito cran.r-project.org cliccando, a seconda del proprio sistema operativo, su uno dei seguenti link:

  • Download R for Windows
  • Download R for (Mac) OS X
  • Download R for Linux

Per esempio, per gli utenti Windows la procedura `e la seguente:

  • Download R for Windows
  • Subdirectories: base version
  • Download R 3.4.3 (62 megabytes, 32/64 bit, ultima versione disponibile al momento della scrittura di questa dispensa). N.B. Bisogna selezionare la versione 32 o 64 bit a seconda del proprio sistema operativo.

2 Introduzione

La diffusione dei PC ha reso disponibile una quantita di dati immensa. Pensiamo, per esempio, ai dati di cui dispongono imprese private o enti pubblici su clienti, fornitori e, piu in generale, cittadinanza. R e il linguaggio e ambiente ideale per svolgere elaborazioni statistiche e visualizzare i dati. Nasce da un’idea di John Chambers ede in grado di fornire un’ampia scelta di tecniche statistiche e grafiche. E’ un linguaggio di programmazione orientato agli oggetti (object oriented ): permette di creare, o meglio definire, oggetti che possono interagire gli uni con gli altri. Riportiamo alcuni tra i suoi principali vantaggi:

  • R `e gratuito, a differenza di molti software;
  • e disponibile per sistemi Windows, Mac e Linux e la sintassie pressoch´e la stessa;
  • permette qualsiasi tipo di analisi statistica;
  • `e in grado di elaborare centinaia di migliaia di osservazioni e variabili;
  • offre la possibilita di estendere le funzionalita di base attraverso l’installazione e l’utilizzo dei pacchetti.

2.1 La console

Una volta avviato il programma R appare la console. Si tratta di una finestra che permette di dialogare con il sistema. E’ un ambiente interattivo, ossia i comandi che vengono inseriti in questa finestra (input) vengono elaborati ed R produce una risposta immediata (output). R presenta in questa stessa finestra i risultati ed eventuali messaggi di errore. Nel caso in cui i comandi inseriti mirano alla creazione di un grafico, quest’ultimo verr`a rappresentato in un’altra finestra.

Il simbolo > che compare nella console e il prompt. La riga su cuie allineato il prompt e detta linea di comando. Se il prompte allineato a sinistra nella linea di comando, R e pronto per ricevere delle istruzioni. Una volta concluso il comando digitiamo il tasto Invio affiche esso venga elaborato. Quando nella linea di comando e presente il simbolo +, R sta suggerendo che il comando che abbiamo inseritoe incompleto. Per ripristinare il prompt basta digitare il tasto Esc sulla tastiera. N.B. Digitare il tasto Esc non equivale a chiudere la finestra!

Una sessione consiste nell’apertura del programma, l’elaborazione dei dati e poi la chiusura. Per chiudere una sessione si pu`o digitare q() nella console oppure selezionare il menu

  • File | Exit (per gli utenti Windows);
  • R | Esci da R (per gli utenti Mac).

Inserendo il comando help.start() nella console e premendo Invio si apre una pagina introduttiva di aiuto. La console di R puo essere utilizzata innanzitutto come semplice calcolatrice. Scriviamo l’operazione da svolgere e premiamo Invio, cosı comparir`a nella riga successiva il risultato. La presenza di spazi bianchi tra numeri, simboli matematici e parentesi non viene considerata da R, pertanto non influenza il risultato.

1 + 1. [1] 2.

3 * 2

2.2 Il file script

Anzich´e inserire i comandi direttamente nella console di R possiamo utilizzare un file script. Quest’ultimo non `e una finestra di calcolo, ma consente di scrivere, modificare e conservare il codice con i comandi che poi dovranno essere inviati nella console per essere elaborati.

Un file script pu`o essere creato

  • dagli utenti Windows tramite il menu File | Nuovo script;
  • dagli utenti Mac tramite il men Archivio | Nuovo documento.

Per far ‘interagire’ il file script con la console seguiamo la seguente procedura:

  • (Sistema Operativo Windows) inviamo la linea di comando del file script su cui e posizionato il cursore direttamente dal file script alla console digitando i tasti Ctrl+R. Per inviare piu linee di comando basta selezionarle nello script e premere Ctrl+R. Per selezionare e inviare direttamente tutto il contenuto del file script digitiamo sequenzialmente Ctrl+A e Ctrl+R.
  • (Sistema Operativo Mac) inviamo la linea di comando del file script su cui e posizionato il cursore dal file script alla console digitando i tasti cmd+Invio. Per inviare piu linee di comando basta selezionarle nello script e premere cmd+Invio. Per selezionare e inviare direttamente tutto il contenuto del file script digitiamo sequenzialmente cmd+A e cmd+Invio.

2.3 Come salvare

Il file script pu`o essere salvato con l’estensione .R

  • dagli utenti Windows tramite il menu File | Salva su file;
  • dagli utenti Mac tramite il menu Archivio | Registra col nome.

Per leggere/riaprire un file con estensione .R `e necessario aprire il programma R e selezionare il file dal menu

  • File | Apri script (per gli utenti Windows);
  • Archivio | Apri Documento (per gli utenti Mac).

N.B. Il doppio click sull’icona del file non permette di aprirlo.

Il contenuto della console, infine, pu`o essere salvato

  • dagli utenti Windows tramite la funzione history(). Inserendo il comando history(n=100) nella console e premendo Invio, per esempio, compare una nuova finestra contenente il file script con gli ultimi 100 comandi digitati nella console. E’ possibile salvare il contenuto di questa nuova finestra in un file con estensione .txt oppure .R tramite il menu File | Salva con nome. Un modo alternativo per salvare il contenuto della console `e ultilizzare direttamente il menu File | Salva su File. In questo modo salveremo, oltre ai comandi inseriti, anche il prompt e gli output ottenuti.
  • dagli utenti Mac tramite il menu Archivio | Registra col nome. Si salvera nella directory prescelta diret- tamente un file con estensione .txt. Questo file conterra, oltre ai comandi inseriti, anche il prompt e gli output ottenuti. N.B. Per il Sistema Operativo Mac la modalita che si avvale del comando history() none valida.

2.4 Installazione dei pacchetti

I pacchetti sono dei file che ampliano le potenzialita di R e contengono funzioni e dati. Alcuni pacchetti di base sono gia presenti nella release di R, altri invece devono essere installati. Per installare un pacchetto `e necessaria una connessione internet.

L’installazione di un pacchetto avviene

  • per gli utenti Windows, tramite il menu Pacchetti | Installa pacchetti. Bisogna poi scegliere il CRAN mirror (‘Italy (Padua)’, per esempio) e dall’elenco che compare selezionare ed installare il pacchetto desiderato.
  • per gli utenti Mac, tramite il menu Pacchetti e dati | Installatore di pacchetti. Bisogna poi inserire nella ricerca il nome del pacchetto da installare, scegliere il CRAN mirror (‘Italy (Padua)’, per esempio), e cliccare ‘Scarica elenco’. Dall’elenco selezioniamo e installiamo il pacchetto desiderato cliccando ‘installa selezionati’.

Per sapere quali sono i pacchetti gi`a presenti nella release di R con cui stiamo lavorando utilizziamo il comando library().

library()

Se nella sessione in corso si rende necessario il contenuto di un pacchetto che e stato gia installato, quest’ultimo deve essere richiamato ancora tramite la funzione library(), stavolta inserendo come argomento della funzione il nome del pacchetto desiderato. N.B. Per richiamare un pacchetto non occorre essere collegati ad internet. Per esempio per utilizzare il contenuto del pacchetto ‘MASS’ inseriamo il comando:

library(MASS)

Per caricare un dataset contenuto in una library si utilizza la funzione data(), seguita dalla funzione attach(). La prima seleziona ed importa nella console il dataset di interesse, la seconda carica temporaneamente in memoria le variabili del dataset (o matrice dei dati) e permette, quindi, di accedere al contenuto delle variabili utilizzando direttamente il loro nome. La funzione head() mostra solo le prime sei righe della matrice dei dati.

library(MASS) data(Animals) attach(Animals) Animals head(Animals)

Per avere informazioni su funzioni, pacchetti, etc. si pu`o ricorrere alla funzione help() oppure al simbolo “?”.

help(package="MASS") help(mean) ?median

Possiamo richiedere alcuni esempi relativi ad una funzione tramite il comando example().

example(median)

Quando infine non ricordiamo l’esatto nome di una funzione possiamo effettuare una ricerca per argomento tramite la funzione help.search() ricorrendo ad una parola chiave.

help.search("random")

2.5 Introdurre gli input

Ogni entita che il programma crea e manipola (un numero, una variabile, una funzione, etc.)e definita oggetto. Gli oggetti possono essere salvati con un nome, per poter essere riutilizzati durante la sessione. Durante una sessione di lavoro gli oggetti vengono temporaneamente salvati nello spazio di lavoro (workspace). L’operatore di assegnazione `e rappresentato dal simbolo “< −”. In alternativa possiamo utilizzare il simbolo “=”.

x <- 1 y = 2

Per visualizzare l’oggetto memorizzato bisogna richiamarlo tramite il suo nome o utilizzare la funzione print().

x [1] 1

y [1] 2

print(x) [1] 1

Assegnamo e visualizziamo contestualmente un oggetto inserendo l’operazione di assegnazione tra parentesi ().

(x <- 1) [1] 1

Se utilizziamo pi`u volte lo stesso nome la variabile viene sovrascritta.

3 Gli oggetti in R

Tutto cio che creiamo, o meglio definiamo, e/o introduciamo in R tramite fonti esterne rappresenta un oggetto. I numeri rappresentano il tipo di oggetto piu semplice. Oltre a questi, alcuni degli oggetti pi`u comuni sono:

  • i vettori;
  • i fattori;
  • le matrici;
  • gli array;
  • i data-frame.

3.1 I vettori

Il vettore e un insieme di elementi. Poiche in R esistono 5 classi di oggetti: numeric (numeri reali), integer (numeri interi), character (espressioni verbali), logical (elementi logici), complex (numeri complessi), per creare un vettore `e necessario che tutti i suoi elementi appartengano alla stessa classe. Distinguiamo diversi tipi di vettori a seconda del “tipo” (o classe) di oggetti e/o elementi che li compongono:

  • vettori numerici
  • vettori di numeri interi
  • vettori con caratteri
  • vettori logici
  • vettori complessi. Questa informazione viene rilevata tramite le funzioni mode() e class(). N.B. Un oggetto che si presenta come un vettore ma contiene elementi appartenenti a classi diverse `e la lista.

X <- list(1, "a", TRUE, 1 + 4i)

3.1.1 Creare i vettori

Per definire un vettore esistono molti modi. I vettori che contentengono una sequenza di numeri interi consecutivi (o al passo di 1 ) si creano tramite il simbolo “:”.

1: [1] 1 2 3 4 5

5: [1] 5 4 3 2 1

x1 <- 9: x [1] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [26] 34 35 36 37 38 39

Il numero riportato nelle parentesi [ ] a sinistra dell’output indica la posizione che occupa nel vettore il numero che gli sta accanto, ossia il primo elemento della riga. Nell’esempio il numero 9 corrisponde al primo elemento del vettore, il numero 34 al ventiseiesimo elemento.

Il modo piu comune per creare un generico vettoree utilizzare la funzione c(), la quale ‘concatena’ gli oggetti. E’ possibile concatenare singoli elementi o anche dei vettori.

a = c(1,2,5.3,6,-2,4) a [1] 1.0 2.0 5.3 6.0 -2.0 4.

b = c("uno","due","tre") b [1] "uno" "due" "tre"

c = c(TRUE,TRUE,TRUE,FALSE,TRUE,FALSE) #oppure c=c(T,T,T,F,T,F) c [1] TRUE TRUE TRUE FALSE TRUE FALSE

d <- c(1+0i,2+4i) d [1] 1+0i 2+4i

x2 <- c(.5, .6, 8) x [1] 0.5 0.6 8.

mode(x1); mode(x2) [1] "numeric" [1] "numeric"

class(x1); class(x2) [1] "integer" [1] "numeric"

z1=c(x1,x2) z [1] 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23. [16] 24.0 25.0 26.0 27.0 28.0 29.0 0.5 0.6 8.

La funzione vector() genera vettori ”vuoti” di lunghezza n i cui elementi appartengono ad una specifica classe.

x <- vector("numeric", length=100) # in alternativa: x <- numeric(100) x [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

mode(x) [1] "numeric"

y <- vector("logical", length=15) # in alternativa: y <-logical(15) y [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [13] FALSE FALSE FALSE

mode(y) [1] "logical"

Due tipologie particolari di vettori possono essere creati tramite le funzioni seq() e rep().

La funzione seq(from, to, by, length) permette di creare un vettore che contiene una successione (o sequenza) di numeri specificando il primo e l’ultimo numero della successione e poi il ‘passo’ della sequenza, ossia la distanza tra i numeri (opzione ‘by’), oppure la lunghezza della sequenza, ossia il numero di elementi che essa deve contenere (opzione ‘length’).

w = seq(from = 3, to = 15, by = 3) w [1] 3 6 9 12 15

w1 = seq(from = 3, to = 15, length = 5) w

[1] 3 6 9 12 15

w2 = seq(1, 3, by = 0.5) w [1] 1 1.5 2 2.5 3

[1] FALSE TRUE TRUE TRUE

y == 8 [1] FALSE FALSE TRUE FALSE

TRUE==0; TRUE== [1] FALSE [1] TRUE

union(x,y) # unione tra vettori [1] 1 2 3 4 6 7 8 9

intersect(x,y) # intersezione tra vettori integer(0)

Ai vettori in R non e associata una dimensione, ossia non sono interpretanti ne come righe n`e come colonne.

dim(x) NULL

Per poter svolgere il prodotto scalare tra vettori occorre che il primo vettore sia una riga ed il secondo una colonna, pertanto `e necessario attribuire loro una dimensione. La funzione dim() in questo caso deve contenere come argomento il nome del vettore e deve essere uguagliata ad un vettore di due elementi, le cui entrate corrisponderanno rispettivamente al numero di righe e di colonne che si intende associare al vettore in questione.

dim(x)=c(1,4); dim(y)=c(1,4) dim(x); dim(y) [1] 1 4 [1] 1 4

Per eseguire un prodotto scalare si utilizza il simbolo %*%. La funzione t() traspone il vettore.

x%*%t(y) [,1] [1,] 80

Consideriamo i seguenti vettori come caratteri rilevati su sei individui e svolgiamo qualche semplice operazione.

peso = c(50, 75, 80, 56, 75, 58) altezza = c(1.65, 1.78, 1.91, 1.72, 1.81, 1.68) eta = c(19, 22, 21, 23, 22, 20) sesso = c("F", "M", "M", "F", "M", "F")

(alt.cm = altezza*100) # cambiamo l’unit`a di misura [1] 165 178 191 172 181 168

(bmi = peso/altezza^2) # calcoliamo il body mass index [1] 18.36547 23.67125 21.92922 18.92915 22.89307 20.

Per selezionare e visualizzare gli elementi di un vettore utilizziamo le parentesi quadre [ ]. In particolare, digitiamo il nome del vettore da cui desideriamo estrarre uno o pi`u elementi e all’interno delle parentesi quadre inseriamo la posizione dell’elemento o degli elementi da estrarre.

peso[1] # prima unit`a del vettore peso [1] 50

peso[c(6,3)] # sesta e terza unit`a del vettore peso [1] 58 80

altezza[-4] # eliminiamo l’altezza della quarta unit`a

[1] 1.65 1.78 1.91 1.81 1.

altezza[eta == 22] # altezza di chi ha 22 anni [1] 1.78 1.

peso[sesso == "M"] # peso degli individui di sesso maschile [1] 75 80 75

altezza[peso <= 70] # altezze a cui corrispondono pesi <= 70 kg

[1] 1.65 1.72 1.

peso[altezza > 1.70] # pesi a cui corrispondono altezze > 1.70 mt [1] 75 80 56 75

altezza[eta < 22 & sesso == "F"] # altezze delle donne con et`a inferiore a 22 anni [1] 1.65 1.

E’ possibile associare dei nomi agli elementi di un vettore tramite la funzione names().

reddito <- (5:9)* names(reddito) NULL

names(reddito) <- c("a","b","c","d","e") # oppure: names(reddito) = c(letters[1:5]) reddito a b c d e 5000 6000 7000 8000 9000

Possiamo poi estrarre gli elementi del vettore utilizzando direttamente il loro nome anzich´e la loro posizione.

reddito[c("c","d","e")] c d e 7000 8000 9000

3.1.3 Gestire i vettori e rimuovere i valori mancanti

Gli oggetti in R possono essere “interrogati” circa la loro classe (tramite le funzioni che iniziano per is.) ed essere forzati ad appartenere ad una classe piuttosto che ad un’altra (tramite le funzioni che iniziano per as.).

x <- 0: is.character(x) [1] FALSE

is.numeric(x) [1] TRUE

as.numeric(x) [1] 0 1 2 3 4 5 6

as.logical(x) [1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE

as.character(x) [1] "0" "1" "2" "3" "4" "5" "6"

x1 <- c(TRUE, FALSE, TRUE, FALSE) as.numeric(x1); as.character(x1) [1] 1 0 1 0 [1] "TRUE" "FALSE" "TRUE" "FALSE"

3.3 Le matrici

La matrice `e una collezione bidimensionale di dati, organizzata in righe e colonne. La funzione matrix() permette di creare in R le matrici. Il primo argomento della funzione corrisponde agli elementi della matrice, poi occorre specificare nel secondo e nel terzo argomento rispettivamente il numero di righe e di colonne. Di default gli elementi vengono inseriti per colonna, per modificare l’ordinamento bisogna introdurre l’opzione ‘byrow=TRUE’.

m1 <- matrix(1:6, nrow = 2, ncol = 3) m [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6

dim(m1) [1] 2 3

m2 <- matrix(1:6, 2, 3, byrow=T) m [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6

U <- matrix(1,3,3) # matrice unitaria U [,1] [,2] [,3] [1,] 1 1 1 [2,] 1 1 1 [3,] 1 1 1

Le matrici possono anche essere create direttamente a partire dai vettori modificandone la dimensione.

(m <- 1:10) [1] 1 2 3 4 5 6 7 8 9 10

dim(m) NULL

dim(m) <- c(1,10) m [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 1 2 3 4 5 6 7 8 9 10

dim(m) <- c(2, 5) m [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10

Le matrici possono essere anche create affiancando vettori della stessa lunghezza tramite le funzioni cbind() e rbind(). La prima affianca i vettori come colonne, la seconda li affianca come righe.

x <- 1:3; y <- 10:

cbind(x, y) # i vettori sono intesi come colonne x y [1,] 1 10 [2,] 2 11 [3,] 3 12

rbind(x, y) # i vettori sono intesi come righe [,1] [,2] [,3] x 1 2 3 y 10 11 12

3.3.1 Operazioni tra matrici

In R con le matrici possiamo svolgere semplici operazioni elemento per elemento, il prodotto per uno scalare (prodotto tra una matrice ed uno scalare) ed il prodotto matriciale (il cosiddetto ‘prodotto riga per colonna’ ).

x <- matrix(1:4,2,2) y <- matrix(rep(10, 4),2,2)

x+y [,1] [,2] [1,] 11 13 [2,] 12 14

x-y [,1] [,2] [1,] -9 - [2,] -8 -

y-x [,1] [,2] [1,] 9 7 [2,] 8 6

x*2 # prodotto per uno scalare [,1] [,2] [1,] 2 6 [2,] 4 8

y*0. [,1] [,2] [1,] 5 5 [2,] 5 5

x*y # prodotto elemento per elemento [,1] [,2] [1,] 10 30 [2,] 20 40

x/y [,1] [,2] [1,] 0.1 0. [2,] 0.2 0.

x %*% y # prodotto matriciale [,1] [,2] [1,] 40 40 [2,] 60 60

Calcoliamo la trasposta, il determinante e l’inversa di una matrice tramite le funzioni t(), det() e solve().

t(x) # matrice trasposta [,1] [,2] [1,] 1 2 [2,] 3 4

3.4 Gli array

Gli array sono oggetti che possono essere descritti come un insieme di matrici. Vengono creati in R tramite la funzione array(), la quale contiene come primo argomento gli elementi dell’array, come secondo argomento le sue dimensioni, ossia il numero di righe, il numero di colonne e il numero di matrici (o fette) dell’array.

Supponiamo, per esempio, di aver rilevato su tre individui (a, b e c) cinque caratteri (x, y, z, k e h) in due istanti temporali. Per comodita supponiamo che le osservazioni siano tutti i numeri interi tra 1 e 30. Il modo migliore per memorizzare questi dati in Re utilizzare un array: nella prima matrice inseriremo i dati relativi al primo istante temorale, nella seconda matrice quelli relativi al secondo istante temporale.

w <- 1: dati <- array(w, dim = c(3, 5, 2))

dati

, , 1 [,1] [,2] [,3] [,4] [,5] [1,] 1 4 7 10 13 [2,] 2 5 8 11 14 [3,] 3 6 9 12 15

, , 2 [,1] [,2] [,3] [,4] [,5] [1,] 16 19 22 25 28 [2,] 17 20 23 26 29 [3,] 18 21 24 27 30

Con la funzione dimnames() attribuiamo i nomi agli individui (ossia alle righe) e alle variabili (alle colonne).

dimnames(dati) <- list(c("a", "b","c"), c("x", "y","z","k","h")) dati

, , 1 x y z k h a 1 4 7 10 13 b 2 5 8 11 14 c 3 6 9 12 15

, , 2 x y z k h a 16 19 22 25 28 b 17 20 23 26 29 c 18 21 24 27 30

Se poniamo pari a 1 la terza dimensione dell’array, generiamo semplicemente una matrice.

v <- 1: a <- array(v, dim = c(3, 5, 1))

a

, , 1 [,1] [,2] [,3] [,4] [,5] [1,] 1 4 7 10 13 [2,] 2 5 8 11 14 [3,] 3 6 9 12 15

3.5 I data frame

Un data-frame e una matrice di dati in cui ogni riga corrisponde un individuo ed ogni colonnae associata ad una variabile. A differenza delle matrici (i cui elementi possono essere solo numeri), un data-frame, passando da una colonna all’altra, pu`o contenere oggetti di natura diversa. Contiene pertanto dati eterogenei.

Un data-frame viene creato in R tramite la funzione data.frame(). Gli oggetti da affiancare costituiscono gli argomenti della funzione. Consideriamo, per esempio, i dati relativi ai caratteri “peso”, ”altezza”, “et`a” e “sesso” rilevati su sei individui.

peso = c(50, 75, 80, 56, 75, 58) altezza = c(1.65, 1.78, 1.91, 1.72, 1.81, 1.68) eta = c(19, 22, 21, 23, 22, 20) sesso = c("F", "M", "M", "F", "M", "F") sesso = factor(sesso) Dati = data.frame(peso, altezza, eta, sesso)

Dati peso altezza et`a sesso 1 50 1.65 19 F 2 75 1.78 22 M 3 80 1.91 21 M 4 56 1.72 23 F 5 75 1.81 22 M 6 58 1.68 20 F

class(Dati) [1] "data.frame"

Le funzioni str() e names() permettono di sintetizzare l’informazione contenuta nel data-frame. La prima ne descrive la struttura (numero di osservazioni e di variabili) ed il tipo di variabili; la seconda riporta come output i nomi delle variabili.

str(Dati) ’data.frame’: 6 obs. of 4 variables: $ peso : num 50 75 80 56 75 58 $ altezza: num 1.65 1.78 1.91 1.72 1.81 1. $ et`a : num 19 22 21 23 22 20 $ sesso : Factor w/ 2 levels "F","M": 1 2 2 1 2 1

names(Dati) [1] "peso" "altezza" "et`a" "sesso"

Per richiamare le variabili di un data frame possiamo utilizzare il simbolo $.

Dati$peso [1] 50 75 80 56 75 58

La funzione data.matrix() trasforma, invece, il data-frame in una matrice.

d=data.matrix(Dati) d peso altezza et`a sesso [1,] 50 1.65 19 1 [2,] 75 1.78 22 2 [3,] 80 1.91 21 2 [4,] 56 1.72 23 1 [5,] 75 1.81 22 2 [6,] 58 1.68 20 1

4 Caricare dati da fonti esterne

Spesso i dati devono essere importati in R da file esterni. R e in grado di leggere file di qualsiasi formato. Descriviamo di seguito la procedura per la lettura di file con estensione .txt e .csv tramite le funzioni read.csv(), read.table() e scan(). N.B. I file con estensione ‘csv’ sono dei file in cui le cifre decimali sono separate da un punto e lo spazio tra le colonnee rappresentato da una virgola. Innanzitutto e importante impostare il path, ossia il percorso, della directory che contiene il file da leggere. Per sapere quale lo spazio di lavoro di default, ossia quello utilizzato dal programma nel momento in cui viene lanciato, si utilizza il comando getwd(), che mostra il percorso della cartella nel computer automaticamente selezionata al momento dell’installazione del programma.

getwd()

Per modificare lo spazio di lavoro e quindi impostare una directory diversa si utilizza il comando setwd(), oppure il menu File | Cambia directory (Sistema Operativo Windows), Misc | Cambia directory di lavoro (Sistema Operativo MacOS).

setwd("C:/Users/.../Desktop")

La funzione dir() permette di visualizzare il contenuto della directory di lavoro impostata. Per visualizzare i file aventi una determinata estensione specifichiamo l’opzione ‘pattern’.

dir() dir(pattern="*.txt")

Una volta impostato il percorso corretto, si pu`o procedere alla lettura del file:

  1. read.csv(“nomedelfile.csv”)

La funzione read.csv() permette di leggere file con estensione csv. Il primo argomento della funzione `e il nome del file (con la sua estensione e riportato tra le virgolette). Possiamo specificare alcune opzioni: “header=TRUE” specifica che la prima riga della matrice dei dati da importare contiene i nomi delle variabili; “row.names=1” indica di non leggere la prima colonna del data-frame come variabile (talvolta la prima colonna di una matrice di dati riporta la numerazione progressiva degli individui su ci sono state rilevate le variabili).

A=read.csv("M2.csv")

  1. read.table(“nomedelfile.csv”), oppure read.table(“nomedelfile.txt”)

La funzione read.table() permette di leggere file con estensione csv e txt. Nel primo caso bisogna specificare le opzioni “dec” (simbolo dei decimali) e “sep” (separatore delle colonne).

B=read.table("M2.csv", header=T, dec=".", sep =",", row.names=1) C=read.table("stockmarket.txt", header=T)

  1. scan(“nomedelfile.txt”)

La funzione scan() e utile per importare in R un file con estensione txt che contiene un insieme di dati relativi ad un’unica variabile. Per essere piu precisi, la funzione read.table() `e utile per importare una matrice di dati, mentre la funzione scan() per importare un vettore.

D=scan("global.txt")