calcolo delle probabilità, STATISTICA e ricerca operativa

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

1 Leggere e scrivere dati da file Giorgio Valentini e –mail: DSI – Dipartimento di Scienze dell Informazione Università degli Studi.
Linguaggio R Raffaele Miele Dipartimento di Matematica e Statistica Università degli Studi di Napoli Federico II
ESERCITAZIONE R 12,19 marzo 2012 Mario Mastrangelo
Dipartimento di Matematica
OPERAZIONI CON MATRICI
Indicizzazione Estrazione dellelemento sulla prima riga e terza colonna della prima matrice > z[1,3,1] [1] 5 Estrazione di tutti gli elementi della seconda.
PHP.
Dipartimento di Matematica
Informatica Generale Marzia Buscemi
1 la competenza alfabetica della popolazione italiana CEDE distribuzione percentuale per livelli.
Training On Line – CONA. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Annuali > Nuova Richiesta Si accede alla pagina di Richiesta.
Training On Line - Report. 2 Report storico Da menu: Reportistica -> Report storico Si accede alla pagina di selezione del report storico.
Lez. 3 - Gli Indici di VARIABILITA’
Anno accademico Array e puntatori in C.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
FUNZIONI DI BIBLIOTECA
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
File.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Funzioni matematico – statistiche I comandi matematici di più comune utilizzo, applicabili a scalari e matrici, sono: Sqrt(x), che calcola la radice quadrata.
Importazione di dati Nellambito dellutilizzo di qualsiasi software statistico una necessità è quella di importare dati esterni forniti dallutilizzatore.
Creazione di matrici Delimititatore di riga Delimititatore di matrice
Array bidimensionali Paragrafo5.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Access: Query semplici
Analisi ed ottimizzazione di strumenti Software per l'utilizzo di IDL sulla GRID ENEA S.PI.1.2 Strumenti per la grafica Marta Chinnici Portici, 11 Dicembre.
CORSO DI RICERCA BIBLIOGRAFICA 4. giornata (20 marzo 2008) Web of Science Beilstein e Gmelin Crossfire.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Algebra matriciale e linguaggio matriciale in MATLAB
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
Strutture di controllo in C -- Flow Chart --
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Analisi di Immagini e Dati Biologici
Corso di PHP.
EXCEL FORMATTAZIONE DATI.
Portale Capacità STOGIT
INTRODUZIONE A MATLAB.
Manipolazione dei dati
1° passo Aprire Internet Explorer Andare alla homepage di Ateneo Aprire il menu Ateneo Scorrere fino Servizi di Ateneo Cliccare su Servizi Informatici.
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
C APITOLO 6 © 2012 Giorgio Porcu – Aggiornamennto 22/02/2012 G ESTIRE D ATI E C ARTELLE DI LAVORO Excel Avanzato.
Ll Questionario Introduzione al software SAS (Parte 2) Metodi Quantitativi per Economia, Finanza e Management Esercitazione n°2.
Test Reti Informatiche A cura di Gaetano Vergara Se clicchi sulla risposta GIUSTA passi alla domanda successiva Se clicchi sulla risposta ERRATA passi.
Elementi di Informatica di base
Introduzione a XI Conferenza nazionale di Statistica febbraio 2013 Pillole formative di statistica.
Realizzato da Roberto Savino
Fondamenti delle Reti di Computer Seconda parte Carasco 15/04/2010.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esercitazione 1 Marco D. Santambrogio – Ver. aggiornata al 9 Aprile 2014.
Modulo 6 Test di verifica
Corso Web CSV – Andiamo on-line 1 Andiamo on-line Corso di formazione Elementi base per la costruzione di un sito web.
Modulo 5 - Database. Contenuti della lezione 5.1.1Concetti Fondamentali 5.1.2Organizzazione di un Database 5.1.3Relazioni 5.2.1Lavorare con i database.
Lezione 3 Struttura lessicale del linguaggio
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Microsoft Word Interfaccia grafica
Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente.
Lettura e analisi statistiche dei dati e computer analysis
Introduzione a Javascript
INTRODUZIONE A MATLAB Sara Poltronieri. Avvio del programma Avvio di Matlab (Windows) Start  Programmi  Matlab (o icona) Avvio di Matlab (Linux) terminale.
Di Pietro Demurtas. È il nome di un pacchetto statistico implementato a partire dai primi anni ‘90 da Ihaka e Gentleman. È un linguaggio di programmazione.
Metodologia della ricerca e analisi dei dati in (psico)linguistica 25 Giugno 2015 Introduzione ad R
0 Laboratorio Informatica - SAS – Anno Accademico LIUC Alcune indicazioni Dettaglio lezioni: Prima : Michele Gnecchi – Introduzione a SAS Guide.
Corso di Politiche Regionali Introduzione a STATA a cura del Dott. Augusto Cerqua 15/10/2012.
03/06/20161 SPSS Statistics Statistical Package for Social Science.
Transcript della presentazione:

calcolo delle probabilità, STATISTICA e ricerca operativa Introduzione a R “Quick Guide for R” Prodotto da Enrico Properzi - enrico.properzi3@unibo.it Riedizione di Sergio Capone – ITIS Leonardo Da Vinci – capone.s@itisvinci.com Edito A.A. 2010-2011

Cos’è R? R è un ambiente integrato di svilluppo1 che permette di elaborare dati, eseguire calcoli ed effettuare rappresentazioni grafiche. Caratteristiche principali: Si compone di un insieme di strumenti di calcolo per l’analisi statistica dei dati È un linguaggio object-oriented2 (come Java o C++) È open source e libero nella distribuzione e nell’uso E’ multipiattaforma (Windows, MacOsX, Linux, Unix…) 1. Un integrated development environment (IDE), in italiano ambiente di sviluppo integrato, (anche conosciuto in altri contesti come integrated design environment o integrated debugging environment, rispettivamente ambiente integrato di progettazione e ambiente integrato di debugging) è software applicativo che aiuta i programmatori nello sviluppo del codice. Normalmente consiste in un editor di codice sorgente, un compilatore e/o un interprete, un tool di building automatico, e (frequentemente) un debugger. A volte è integrato con un sistema di controllo di versione e con uno o più tool per semplificare la costruzione di una GUI. Alcuni IDE specializzati, rivolti cioè allo sviluppo di software orientato agli oggetti, comprendono anche un navigatore di classi, un analizzatore di oggetti e un diagramma della gerarchia delle classi. Sebbene siano in uso alcuni IDE multi-linguaggio, come Eclipse, NetBeans e Visual Studio, generalmente gli IDE sono rivolti a specifici linguaggi di programmazione, come Visual Basic o Delphi. 2. La programmazione orientata agli oggetti (OOP, Object Oriented Programming) è un paradigma di programmazione che permette di definire oggetti software in grado di interagire gli uni con gli altri attraverso lo scambio di messaggi. È particolarmente adatta nei contesti in cui si possono definire delle relazioni di interdipendenza tra i concetti da modellare (contenimento, uso, specializzazione). Un ambito che più di altri riesce a sfruttare i vantaggi della programmazione ad oggetti è quello delle interfacce grafiche. 3. In informatica, un paradigma di programmazione è uno stile fondamentale di programmazione, ovvero un insieme di strumenti concettuali forniti da un linguaggio di programmazione per la stesura di programmi, e definisce/determina il modo in cui il programmatore concepisce e percepisce il programma. Diversi paradigmi si differenziano per i concetti e le astrazioni usate per rappresentare gli elementi di un programma (come ad esempio le funzioni, gli oggetti, le variabili, vincoli, ecc) e per i procedimenti usati per l'esecuzione delle procedure di elaborazione dei dati (assegnazione, calcolo, iterazione, data flow, ecc).

Alcuni svantaggi Non ha una GUI1 (Interfaccia Grafica verso l’Utente) Non ha servizi di supporto commerciali Risorse WEB R dispone di un ampia documentazione sul in rete: “An introduction to R”, distribuito con R, ed è un buon punto di partenza in autoapprendimento. FAQ2 : http://cran.r-project.org/other-docs.html 1. L'interfaccia grafica utente, note anche come GUI (dall'inglese Graphical User Interface), comunemente abbreviata in interfaccia grafica, è un tipo di interfaccia verso l’utente che consente, all’utente, di interagire con i dispositivi elettronici grazie alla manipolazione di oggetti grafici convenzionali (icone, barre ecc.). 2. Le Frequently Asked Questions, meglio conosciute con la sigla FAQ, sono letteralmente le "domande poste frequentemente"; più esattamente sono una serie di risposte stilate direttamente dall'autore, in risposta alle domande che gli vengono poste, o che ritiene gli verrebbero poste, più frequentemente dagli utilizzatori di un certo servizio: soprattutto su Internet e in particolare nel web e nelle comunità virtuali vi sono domande ricorrenti alle quali si preferisce rispondere pubblicamente con un documento affinché non vengano poste troppo spesso, in modo da sciogliere i dubbi dei nuovi utenti.

Funzioni di aiuto Oltre a molte guide disponibili sul sito www.r-project.org e più in generale su internet è possibile chiamare alcune funzioni di aiuto mentre si sta lavorando con il programma: help.stat() mostra una pagina web attraverso la quale si accede a manuale e informazioni generali ?comando o help (comando) consentono di accedere direttamente all’aiuto in linea di un determinato comando help.search(argomento) permette di cercare informazioni su comandi di cui non si conosce il nome o su gruppi di comandi.

Workspace Workspace: è lo spazio di lavoro che contiene tutti gli oggetti creati. All’avvio R carica il file .RData e quando esce ti viene data la possibilità di salvare il workspace in questo file. Alcuni comandi per la gestione del workspace: > source("comandi.R") legge il file comandi.R ed esegue i comandi in esso contenuti > sink("output.txt") reindirizza i risultati, che di solito appaiono a video, verso il file output.txt > ls() elenca gli oggetti contenuti nel workspace corrente > rm() elimina uno o più oggetti dallo spazio di lavoro > save.image() salva il workspace corrente nel file ".RData“ > save(x, y, file = "xy.Rdata") salva solo gli oggetti x e y nel file indicato > load("xy.Rdata") legge il file indicato e ripristina gli oggetti precedentemente salvati

DIRECTORY DI LAVORO È possibile verificare quale sia il la directory di lavoro attiva con il comando getwd() > getwd() [1] "C:/Documents and Settings/utente/Documenti" Per modificare la directory di lavoro si utilizza invece il comando setwd() > setwd("c:/laboratorioR/") In alternativa da menù andate in "File|Cambia directory. . . “ Ognuno imposti come directory attiva z:\laboratorio R\cognome.nome .

Operatori logici e di confronto Funzioni esponenziale: exp() logaritmo: log() logaritmo in base 2: log2() logaritmo in base 10: log10() radice quadrata: sqrt() somma: sum() prodotto: prod() valore assoluto: abs() segno: sign() Operatori logici e di confronto < minore > maggiore <= minore o uguale >= maggiore o uguale == uguale != diverso & AND | OR ! NOT

Operazioni elementari con R La console di R può essere utilizzata come semplice calcolatrice. Per le quattro operazioni base si utilizzano i segni: + - * / Per l'elevamento a potenza si utilizza ^ oppure **. Esempio: 3^2 Per la radice quadrata si impiega il comando sqrt(). > (2 - 3)/6 [1] -0.1666667 > 2^2 [1] 4 > sqrt(9) [1] 3 Attenzione: R è case sensitive > Sqrt(9) Errore: non trovo la funzione "Sqrt"

Gli oggetti di R R è un linguaggio di programmazione a oggetti. I principali tipi di oggetto che possono essere creati in R sono: Vettori Matrici Array Liste Data Frames

> x <- "1"; y <- 1 > x; y [1] "1" [1] 1 Tipologie elementari dei dati: Logici > x <- T > y <- F > x; y [1] TRUE [1] FALSE Numerici > x <- 4; y <- sqrt(7) > a; b [1] 4 [1] 2.645751 Numeric, Integer, Complex Stringhe > x <- "string" > y <- “x"; z <- x > x; y; z [1] "string" [1] “x" Fattori: I fattori possono assumere solo valori discreti, definiti come livelli. Es: dati qualitativi o dati ordinali > vProv <- c("BO", "BO", "FC", "RA", "FC") > vProv [1] "BO" "BO" "FC" "RA" "FC” > fProv <- factor(vProv) > fProv [1] BO BO FC RA FC FC RA Levels: BO FC RA > summary(fProv) BO FC RA > x <- "1"; y <- 1 > x; y [1] "1" [1] 1

VETTORI Un vettore di dimensione n può essere definito come una sequenza ordinata di n elementi dello stesso tipo Assegnazione: > x<-7 > x [1] 7 > y <- c(2,7,4,1) > y [1] 2 7 4 1 Un vettore può anche contenere valori logici o caratteri nomi <- c("Alberto","Laura","Mario","Ugo","Martina","Andrea") z <- c(TRUE,TRUE,FALSE,TRUE) È possibile definire un dato mancante all’interno del vettore con NA Y <- c(3, 6, 2, NA)

Operazioni con i vettori: > x <- c(2,3,4) > y <- c(5,6,7) > x*y [1] 10 18 28 > x+y [1] 7 9 11 > x-y [1] -3 -3 -3 > x+y-3 [1] 4 6 8 > x>y [1] FALSE FALSE FALSE > x <- c(-1, 2, 3, 4) > length (x) [1] 4 > max (x) > min(x) [1] -1 > sum (x) [1] 8 > prod(x) [1] -24 > mean(x) [1] 2 > sqrt(x) [1] NaN 1.414 1.732 2.000

Indicizzazione: > z <- seq(-3,8,2) > z [1] -3 -1 1 3 5 7 > x <-1:8 > x [1] 1 2 3 4 5 6 7 8 Il comando 1: 8 è equivalente al comando seq(1,8) solo che questa seconda versione offre in più la possibilità di specificare il passo della successione: > z <- seq(-3,8,2) > z [1] -3 -1 1 3 5 7 > y <- seq(1,8) > y [1] 1 2 3 4 5 6 7 8 > x <- seq(-3,8) > x [1] -3 -2 -1 0 1 2 3 4 5 6 7 8 Se vogliamo accedere al terzo elemento del vettore x scriveremo: > x[3] [1] -1

Un altro comando utile per cercare elementi all’interno di un vettore è which. Se, ad esempioo, vogliamo sapere quali sono gli indici corrispondenti agli elementi del vettore x minori di 2, scriveremo: > which (x<2) [1] 1 2 3 4 5 oppure quelli compresi tra -1 e 5: > which ((x>=-1) &(x<5)) [1] 3 4 5 6 7 8 o quelli più grandi di 1 o più piccoli di -2: > which ((x < -2)|(x>1)) [1] 1 6 7 8 9 10 11 12

MATRICI > sum(A) [1] 81 > length(A) [1] 6 > nrow(A) [1] 3 Una matrice e un insieme di elementi dello stesso tipo con due dimensioni. Il comando per generare una matrice è: A <- matrix(x, nrow = n, ncol = m, byrow = ...) dove: • x è un vettore di dati; • nrow e ncol sono, rispettivamente il numero di righe e di colonne • byrow e un operatore logico. Di default e FALSE, per cui la matrice viene costruita per colonna > A <- matrix (11:16, 3,2) > A [,1] [,2] [1,] 11 14 [2,] 12 15 [3,] 13 16 Matrice trasposta > t(A) [,1] [,2] [,3] [1,] 11 12 13 [2,] 14 15 16 > sum(A) [1] 81 > length(A) [1] 6 > nrow(A) [1] 3 > ncol(A) [1] 2

Una matrice può anche essere generata unendo più vettori o matrici Una matrice può anche essere generata unendo più vettori o matrici. I comandi cbind e rbind, rispettivamente, generano una matrice unendo ivettori (le matrici) per colonna e per riga. > x <- c(1, 2, 3, 4) > y <- c(2, 1, 4, 5) > cbind(x,y) x y [1,] 1 2 [2,] 2 1 [3,] 3 4 [4,] 4 5 > rbind(x,y) [,1] [,2] [,3] [,4] x 1 2 3 4 y 2 1 4 5 Le matrici possono essere numeriche, di stringhe di caratteri o logiche

Indicizzazione: > A [,1] [,2] [1,] 11 14 [2,] 12 15 [3,] 13 16 [1,] 11 14 [2,] 12 15 [3,] 13 16 Voglio selezionare solo alcuni elementi di interesse dalla matrice A: > A[1,2] [1] 14 (Ho selezionato l’elemento della prima riga e seconda colonna) > A[1,] [1] 11 14 (Ho selezionato tutti gli elementi della prima riga) > A[,2] [1] 14 15 16 (Ho selezionato tutti gli elementi della seconda colonna) > A==11 [,1] [,2] [1,] TRUE FALSE [2,] FALSE FALSE [3,] FALSE FALSE (Ho creato una matrice logica)

Operazioni con le matrici: > y <- matrix (1:6, ncol=3) > y [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > x <- matrix (4, 2, 3) > x [,1] [,2] [,3] [1,] 4 4 4 [2,] 4 4 4 Come per i vettori, anche per le matrici le operazioni aritmetiche e di confronto vengono eseguite elemento per elemento > x+y [1,] 5 7 9 [2,] 6 8 10 > x*y [1,] 4 12 20 [2,] 8 16 24 N.B.: Per le operazioni elementari le matrici debbono avere le stesse dimensioni > x-y [,1] [,2] [,3] [1,] 3 1 -1 [2,] 2 0 -2 > x/y [,1] [,2] [,3] [1,] 4 1.333333 0.8000000 [2,] 2 1.000000 0.6666667

> X <- matrix(4:13, ncol=2) > y <- matrix(1:6, nrow=2) > x %*% y [,1] [,2] [,3] [1,] 22 48 74 [2,] 25 55 85 [3,] 28 62 96 [4,] 31 69 107 [5,] 34 76 118 (ho effettuato il prodotto tra due matrici) > z <- t(x) %*% x > z [,1] [,2] [1,] 190 340 [2,] 340 615 solve(z) [,1] [,2] [1,] 0.492 -0.272 [2,] -0.272 0.152 il comando solve(z) consente di calcolare l’inversa di una matrice quadrata non singolare

Assegnare nomi a righe e colonne: È possibile assegnare un nome alle righe ed alle colonne di una matrice con i comandi: rownames(), colnames(), dimnames() > y [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > rownames(y) <- c("peso", "altezza") peso 1 3 5 altezza 2 4 6 > colnames (y) <- c("a", "b", "c") a b c peso 1 3 5 altezza 2 4 6

ARRAY Così come le matrici possono intendersi come estensioni dei vettori, gli array costituiscono una estensione delle matrici. Sono necessari tre indici per definire un array > z <- array(1:16,dim=c(2,3,2)) > z In questo caso z è composto da 2 matrici 2x3 , , 1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 Questa è la prima matrice , , 2 [1,] 7 9 11 [2,] 8 10 12 Questa è la seconda matrice

Indicizzazione: Estrazione dell’elemento sulla prima riga e terza colonna della prima matrice: > z[1,3,1] [1] 5 Estrazione di tutti gli elementi della seconda colonna della seconda matrice: > z[,2,2] [1] 9 10

LISTE Una lista è un contenitore generico in cui è possibile inserire vettori di vario tipo. > lista <- list(1:3, "pippo", matrix(1:4,2)) > lista [[1]] [1] 1 2 3 [[2]] [1] "pippo" [[3]] [,1] [,2] [1,] 1 3 [2,] 2 4 Ho creato una lista di 3 elementi di tipo diverso

> lista$terzo [,1] [,2] [1,] 1 3 [2,] 2 4 Indicizzazione: Gli elementi di una lista si estraggono con le doppie parentesi quadre [[..]] Gli elementi di una lista possono essere identificati con nomi univoci Se un elemento di una lista ha un nome, può essere indicato con la sintassi: nomelista$nomeelemento > lista <- list(primo=1:3, secondo="pippo", terzo=matrix(1:4,2)) > lista[["terzo"]] [,1] [,2] [1,] 1 3 [2,] 2 4 > lista$quarto <- 0 > names(lista) [1] "primo" "secondo" "terzo" "quarto" > lista$terzo [,1] [,2] [1,] 1 3 [2,] 2 4

Matrici e array possono essere nominati facendo uso di liste: Se consideriamo una matrice, può essere utile assegnare dei nomi alle righe e alle colonne; questa operazione viene effettuata utilizzando liste di nomi in cui ciascuna componente si riferisce ad una dimensione: > A <- matrix (1:20, nrow=4) > dimnames(A)<-list(c("PRIMO","SECONDO", "TERZO", "QUARTO"),NULL) > A [,1] [,2] [,3] [,4] [,5] PRIMO 1 5 9 13 17 SECONDO 2 6 10 14 18 TERZO 3 7 11 15 19 QUARTO 4 8 12 16 20 In questo modo vengono assegnati i nomi soltanto alle righe

DATA-FRAME I data-frame sono delle matrici in cui le colonne possono essere di natura differente È un oggetto di particolare importanza in un’ottica di gestione e analisi dei dati. Il data frame rappresenta infatti la matrice dei dati in cui ad ogni riga corrisponde una osservazione e ad ogni colonna una variabile Viene trattato come una lista ed ogni elemento di tale lista rappresenta una variabile statistica Il comando per generare un data frame è data.frame

Voglio creare un dataframe con una variabile `quantitativa' ed una qualitativa': > D <-data.frame(eta=21:24, sesso=c("M","F","F","M")) > D eta sesso 1 21 M 2 22 F 3 23 F 4 24 M > dim(D) indica la `dimensione' (numero dei casi e di variabili) [1] 4 2 > D$altezza <- c(175, 164, 170, 182) eta sesso altezza 1 21 M 175 2 22 F 164 3 23 F 170 4 24 M 182 Ho aggiunto una variabile di nome altezza

Nelle applicazioni µe spesso utile selezionare soltanto una parte del dataframe iniziale: > D[D$sesso=="M","eta"] [1] 21 24 seleziona i valori della variabile eta per i maschi: > D$sesso[D$eta<=23] [1] M F F seleziona i valori della variabile sesso per cui eta<=23: Levels: F M > D$altezza[D$eta<=25 & D$eta>23] [1] 182 seleziona i valori di "altezza" se eta<=25 e eta>23 Sostanzialmente la condizione di selezione dei record µe un vettore logico (ottenuto combinando altri vettori logici) che quando utilizzato come filtro fa in modo che solo gli elementi in corrispondenza di TRUE vengano selezionati.

Costruiamo la matrice voti con 2 colonne contenente interi casuali compresi tra 18 e 30, utilizzando il comando sample: voti <- matrix((sample(18:30,8,replace=TRUE)),nrow=4) E ora creiamo un nuovo data frame: > D <- data.frame(D,Voti=voti) (o, in alternativa: D$Voti <- voti) > D eta sesso altezza Voti.1 Voti.2 1 21 M 175 29 27 2 22 F 164 22 22 3 23 F 170 24 20 4 24 M 182 23 24 > D1 <- data.frame (eta=D$eta, sesso=D$sesso, voti=voti) > D1 eta sesso voti.1 voti.2 1 21 M 29 27 2 22 F 22 22 3 23 F 24 20 4 24 M 23 24

Per selezionare parti di un data-frame si può anche utilizzare la funzione subset(), in cui gli argomenti subset e select specificano rispettivamente i casi e le variabili da includere (o escludere). > subset(D,subset=(sesso=="F" & altezza >=170),select=c(Voti.1,Voti.2)) Voti.1 Voti.2 3 24 20 > subset(D,subset=(sesso=="F" & altezza >=170), select=c(-sesso)) eta altezza Voti.1 Voti.2 3 23 170 24 20

Per avere una descrizione del data frame si possono usare i comandi str() e summary() > str(D) 'data.frame': 4 obs. of 5 variables: $ eta : int 21 22 23 24 $ sesso : Factor w/ 2 levels "F","M": 2 1 1 2 $ altezza: num 175 164 170 182 $ Voti.1 : int 29 22 24 23 $ Voti.2 : int 27 22 20 24 > summary(D) eta sesso altezza Voti.1 Voti.2 Min. :21.00 F:2 Min. :164.0 Min. :22.00 Min. :20.00 1st Qu.:21.75 M:2 1st Qu.:168.5 1st Qu.:22.75 1st Qu.:21.50 Median :22.50 Median :172.5 Median :23.50 Median :23.00 Mean :22.50 Mean :172.8 Mean :24.50 Mean :23.25 3rd Qu.:23.25 3rd Qu.:176.8 3rd Qu.:25.25 3rd Qu.:24.75 Max. :24.00 Max. :182.0 Max. :29.00 Max. :27.00

Importazione di dati In R è possibile leggere dati da diversi formati: file di testo (txt o csv) S-PLUS, SAS, SPSS, Stata, Systat pagine web database esterni N.B.: per importare dati in formati diversi da quello testo è necessario usare appositi pacchetti. Informazioni dettagliate si possono trovare nel manuale “Data Import/Export”, accessibile da menu File di testo: Uno dei formati più semplici contiene i nomi nella prima riga, ed i dati nelle righe successive, con i campi separati da spazi: X <- read.table(file="c:/documenti/salary.txt“, header=TRUE) A volte le colonne sono separate da tabulazioni o virgole: X <- read.table(file="c:/documenti/salary.txt“, header=TRUE, sep=“,”)

Opzioni del comando read.table() il percorso del file viene scritto come negli ambienti Unix (o Linux) con /, oppure con \\; l'argomento header=TRUE specifica che la prima linea del file contiene i nomi delle variabili; l'argomento sep="\t" indica che i diversi campi sono separati da un tab. Avremmo potuto specificare sep="," nel caso di una virgola e così via; l'argomento na.strings="NA" può essere particolarmente utile se nel file sono presenti valori mancanti, in questo caso individuati con NA; l'argomento dec="." specifica il tipo di carattere utilizzato nel file per separare i decimali, in questo caso un punto È possibile importare direttamente anche file in formato .csv (creati ad esempio da Excel). Il comando da utilizzare è read.csv(), che ha una sintassi simile a quella appena vista.

I Pacchetti Molte funzioni di R vivono in ”pacchetti” opzionali. Il comandolibrary() carica i pacchetti dalla libreria dei pacchetti: > library(nomepacchetto) In alternativa, dal menù "Pacchetti" si sceglie l'opzione "Carica pacchetto": Si apre una finestra con la lista dei pacchetti già installati tra cui scegliere quale caricare Per installare un pacchetto non presente nella versione di R, dal menù "Pacchetti" si seleziona "Installa pacchetti". Viene quindi mostrato l’elenco dei mirror tra cui selezionare quello da cui scaricare il pacchetto. Dalla lista si seleziona il pacchetto da installare

Il pacchetto foreign è nella distribuzione standard di R Il pacchetto foreign è nella distribuzione standard di R. Contiene funzioni per gestire l’importazione e l’esportazione dei dati. Più di 1000 pacchetti sono disponibili su http://cran.us.r-project.org (e decine di mirror sparsi per il mondo: il CRAN). Per verificare i pacchetti disponibili si può utilizzare il comando: > .packages(all.available = TRUE) [1] "abind" "acepack" "AER" "akima" [5] "ape" "aplpack" "base" "biglm" [9] "bitops" "boot" "car" "caTools" [13] "chron" "class" "cluster" . . . . . Mentre per elencare i pacchetti caricati utilizzare il comando: > (.packages()) [1] "stats" "graphics" "grDevices" "utils" "datasets" "methods" [7] "base"