Capitolo 1 Analisi numeriche

Per mostrare gli esempi, useremo innanzitutto il data frame wea del package pdataita (si veda la sezione Introduzione per ulteriori informazioni). Cominciamo col caricarlo:

Ora, il riepilogo testuale più semplice di un dataset è fornito dal metodo summary(). Proviamo ad applicarlo al dataset wea (le sole colonne dalla 7 alla 9: Sunshine, WindGustDir e WindGustSpeed).

##     Sunshine       WindGustDir  WindGustSpeed  
##  Min.   : 0.000   NW     : 73   Min.   :13.00  
##  1st Qu.: 5.950   NNW    : 44   1st Qu.:31.00  
##  Median : 8.600   E      : 37   Median :39.00  
##  Mean   : 7.909   WNW    : 35   Mean   :39.84  
##  3rd Qu.:10.500   ENE    : 30   3rd Qu.:46.00  
##  Max.   :13.600   (Other):144   Max.   :98.00  
##  NA's   :3        NA's   :  3   NA's   :2

Come si vede, la funzione summary() riconosce automaticamente le caratteristiche delle singole colonne e produce un riepilogo diverso a seconda del tipo (numerico, fattore, ecc.) delle colonne stesse.
Un riepilogo più dettagliato possiamo ottenerlo usando la funzione describe(), del package Hmisc. Il package Hmisc contiene molte funzioni utili per l’analisi dei dati, grafica di alto livello, utilità, e molto altro. Per illustrare la funzione describe() bisogna ovviamente prima caricare il package Hmisc:

Per variabili numeriche, describe() ritorna anche due decili (10% e 90%) e due percentili (5% e 95%). L’output continua con un elenco delle osservazioni più basse e più alte della variabile. Questa informazione aggiuntiva è molto utile nel descrivere i dati.

## wea$Sunshine 
##        n  missing distinct     Info     Mean      Gmd      .05      .10      .25 
##      363        3      114        1    7.909    3.875     0.60     2.04     5.95 
##      .50      .75      .90      .95 
##     8.60    10.50    11.80    12.60 
## 
## lowest :  0.0  0.1  0.2  0.3  0.4, highest: 13.1 13.2 13.3 13.5 13.6

Pe variabili categoriali, describe() produce anche la frequenza assoluta e percentuale per ciascun livello della stessa.

## wea$WindDir9am 
##        n  missing distinct 
##      335       31       16 
## 
## lowest : N   NNE NE  ENE E  , highest: WSW W   WNW NW  NNW
##                                                                             
## Value          N   NNE    NE   ENE     E   ESE    SE   SSE     S   SSW    SW
## Frequency     31     8     4     8    22    29    47    40    27    17     7
## Proportion 0.093 0.024 0.012 0.024 0.066 0.087 0.140 0.119 0.081 0.051 0.021
##                                         
## Value        WSW     W   WNW    NW   NNW
## Frequency      5     8    16    30    36
## Proportion 0.015 0.024 0.048 0.090 0.107

La funzione describe() può essere usata anche su data frame, come nell’esempio che segue, in cui si descrive il sottoinsieme di colonne dalla 7 alla 9 del data frame wea:

## wea[, 7:9] 
## 
##  3  Variables      366  Observations
## ----------------------------------------------------------------------------------
## Sunshine 
##        n  missing distinct     Info     Mean      Gmd      .05      .10      .25 
##      363        3      114        1    7.909    3.875     0.60     2.04     5.95 
##      .50      .75      .90      .95 
##     8.60    10.50    11.80    12.60 
## 
## lowest :  0.0  0.1  0.2  0.3  0.4, highest: 13.1 13.2 13.3 13.5 13.6
## ----------------------------------------------------------------------------------
## WindGustDir 
##        n  missing distinct 
##      363        3       16 
## 
## lowest : N   NNE NE  ENE E  , highest: WSW W   WNW NW  NNW
##                                                                             
## Value          N   NNE    NE   ENE     E   ESE    SE   SSE     S   SSW    SW
## Frequency     21     8    16    30    37    23    12    12    22     5     3
## Proportion 0.058 0.022 0.044 0.083 0.102 0.063 0.033 0.033 0.061 0.014 0.008
##                                         
## Value        WSW     W   WNW    NW   NNW
## Frequency      2    20    35    73    44
## Proportion 0.006 0.055 0.096 0.201 0.121
## ----------------------------------------------------------------------------------
## WindGustSpeed 
##        n  missing distinct     Info     Mean      Gmd      .05      .10      .25 
##      364        2       35    0.997    39.84    14.24     20.0     24.6     31.0 
##      .50      .75      .90      .95 
##     39.0     46.0     57.0     65.0 
## 
## lowest : 13 15 17 20 22, highest: 78 80 83 85 98
## ----------------------------------------------------------------------------------

Un riepilogo anche più dettagliato di dati numerici è fornito dalla funzione basicStats() del package fBasics (Wuertz et al., 2010).

Anche se la funzione è pensata principalmente per dati di serie storiche, fornisce comunque statistiche utili in generale, come si più vedere dal codice che segue.

##             X..wea.Sunshine
## nobs             366.000000
## NAs                3.000000
## Minimum            0.000000
## Maximum           13.600000
## 1. Quartile        5.950000
## 3. Quartile       10.500000
## Mean               7.909366
## Median             8.600000
## Sum             2871.100000
## SE Mean            0.182732
## LCL Mean           7.550016
## UCL Mean           8.268716
## Variance          12.120962
## Stdev              3.481517
## Skewness          -0.723454
## Kurtosis          -0.270625

Un altro problema frequente nell’analisi dei dati è la presenza di NA. Ci possono essere molte ragioni sottostanti alla presenza di dati mancanti, incluso il fatto che i dati possono essere difficilli da raccogliere e quindi non sempre disponibili.

Sapere perché o quando i dati mancano è importante per decidere come gestire i dati mancanti stessi. La natura dei dati mancanti può essere esplorata usando md.pattern() del package mice:

##     WindGustSpeed Sunshine WindGustDir WindDir9am   
## 329             1        1           1          1  0
## 31              1        1           1          0  1
## 1               1        1           0          1  1
## 3               1        0           1          1  1
## 2               0        1           0          1  2
##                 2        3           3         31 39

md.pattern() ritorna una matrice con ncol(x)+1 colonne (dove x è il data frame analizzato), in cui ogni riga corrisponde ad un pattern di dato mancante (1=osservato, 0=mancante). Le righe e le colonne sono ordinate in ordine crescente di informazione mancante. L’ultima colonna mostra la “complessità” del pattern di dati mancanti (= il numero di variabili con dato mancante nel pattern), mentre l’ultima riga contiene il conteggio dei dati mancanti per ciascuna colonna del data frame, ed il totale.
Nell’esempio qui sopra, si vede che ci sono 320 casi con dati completi (e quindi 0 valori mancanti: ultima colonna), 3 casi in cui mancano valori solo per la variabile Sunshine (1 solo valore mancante: ultima colonna), …, 31 casi in cui mancano valori solo per WindDir9am, e 2 casi in cui mancano valori nelle colonne WindGustSpeed e anche WindGustDir (2 valori: ultima colonna).

Questa funzione non esegue analisi univariate, ma è utile per indagare la struttura delle informazioni sottese ai dati mancanti.

Per eseguire una cosiddetta analisi complete-case, con soli dati completi, si può usare la funzione complete.cases(), che ritorna un vettore logico indicante quali casi sono completi:

##     Sunshine       WindGustDir  WindGustSpeed     WindDir9am 
##  Min.   : 0.000   NW     : 73   Min.   :13.00   SE     : 47  
##  1st Qu.: 5.950   NNW    : 44   1st Qu.:31.00   SSE    : 40  
##  Median : 8.600   E      : 37   Median :39.00   NNW    : 36  
##  Mean   : 7.909   WNW    : 35   Mean   :39.84   N      : 31  
##  3rd Qu.:10.500   ENE    : 30   3rd Qu.:46.00   NW     : 30  
##  Max.   :13.600   (Other):144   Max.   :98.00   (Other):151  
##  NA's   :3        NA's   :  3   NA's   :2       NA's   : 31
##     Sunshine       WindGustDir  WindGustSpeed     WindDir9am 
##  Min.   : 0.000   NW     : 65   Min.   :13.00   SE     : 47  
##  1st Qu.: 6.000   NNW    : 35   1st Qu.:31.00   SSE    : 38  
##  Median : 8.700   E      : 34   Median :39.00   NNW    : 36  
##  Mean   : 7.991   WNW    : 32   Mean   :40.37   N      : 30  
##  3rd Qu.:10.700   ENE    : 29   3rd Qu.:46.00   NW     : 30  
##  Max.   :13.600   ESE    : 23   Max.   :98.00   ESE    : 29  
##                   (Other):111                   (Other):119

Per calcolare misure aggregate quali medie, summary, etc., per livelli di una variabile categoriale, una delle prime funzioni utilizzate è tapply():

##         N       NNE        NE       ENE         E       ESE        SE       SSE 
##  9.209524  7.971429  8.981250  7.910000  8.600000  5.978261  5.808333  7.100000 
##         S       SSW        SW       WSW         W       WNW        NW       NNW 
##  7.759091  6.950000  7.500000 11.450000  7.090000  8.088571  8.108333  8.018182
##   N NNE  NE ENE   E ESE  SE SSE   S SSW  SW WSW   W WNW  NW NNW 
##  21   8  16  30  37  23  12  12  22   5   3   2  20  35  73  44
## 
##    N  NNE   NE  ENE    E  ESE   SE  SSE    S  SSW   SW  WSW    W  WNW   NW  NNW 
##   21    8   16   30   37   23   12   12   22    5    3    2   20   35   73   44 
## <NA> 
##    3
## $N
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.90    8.10    9.70    9.21   11.10   12.70 
## 
## $NNE
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.600   6.650   8.100   7.971  10.500  12.800       1 
## 
## $NE
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   8.575  10.550   8.981  11.475  13.600 
## 
## $ENE
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   6.225   9.300   7.910  10.200  12.600 
## 
## $E
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0     7.3     9.2     8.6    11.5    13.0 
## 
## $ESE
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   3.750   7.100   5.978   8.400  12.500 
## 
## $SE
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   2.800   7.350   5.808   8.525  11.200 
## 
## $SSE
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.200   2.425   7.850   7.100  10.825  13.300 
## 
## $S
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.900   4.900   8.650   7.759   9.950  12.100 
## 
## $SSW
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    5.90    5.90    6.70    6.95    7.75    8.50       1 
## 
## $SW
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    6.80    6.85    6.90    7.50    7.85    8.80 
## 
## $WSW
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   11.30   11.38   11.45   11.45   11.53   11.60 
## 
## $W
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   5.875   8.050   7.090   9.125  11.300 
## 
## $WNW
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   6.400   8.400   8.089  10.100  13.500 
## 
## $NW
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   6.500   8.550   8.108  10.225  13.100       1 
## 
## $NNW
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   5.500   8.900   8.018  10.525  13.600

Negli esempi sopra si vede come il primo parametro (X) della funzione tapply() contenga il vettore di valori per cui si vuola calcolare la funzione (di aggregazione) indicata dal parametro FUN; il parametro INDEX, invece, contiene il vettore di valori che indicano il gruppo di appartenenza di ciascuna osservazione del vettore passato tramite X. Ovviamente il vettore passatp tramite X dovrà avere la stessa lunghezza del vettpre passato tramite INDEX.
Si noti come nell’esempio sopra la combinazione tra tapply() e la funzione length() ritorni praticamente gli stessi risultati della funzione table(), che produce una tabella di frequenze.

Anche con la funzione aggregate() si possono ottenere gli stessi risultati della funzione tapply() in maniera più semplice.

##    wgd   x.Min. x.1st Qu. x.Median   x.Mean x.3rd Qu.   x.Max.
## 1    N 1008.500  1019.100 1021.200 1021.476  1024.300 1032.200
## 2  NNE 1013.900  1016.325 1019.450 1021.925  1029.025 1031.400
## 3   NE 1008.700  1017.225 1018.850 1019.900  1023.850 1032.300
## 4  ENE 1006.600  1014.550 1020.750 1019.367  1022.775 1035.700
## 5    E 1010.700  1017.500 1021.600 1021.535  1025.200 1034.300
## 6  ESE 1010.000  1015.400 1021.100 1022.217  1028.350 1033.600
## 7   SE 1017.400  1021.575 1024.200 1023.967  1026.850 1029.500
## 8  SSE 1007.700  1013.300 1018.600 1019.042  1026.000 1028.200
## 9    S 1010.100  1018.275 1020.800 1021.200  1025.700 1029.000
## 10 SSW  999.400  1020.900 1022.800 1019.720  1027.700 1027.800
## 11  SW 1007.600  1011.050 1014.500 1015.933  1020.100 1025.700
## 12 WSW 1013.100  1015.800 1018.500 1018.500  1021.200 1023.900
## 13   W 1002.100  1009.200 1017.300 1015.805  1020.975 1032.900
## 14 WNW 1004.000  1013.600 1019.200 1018.263  1021.950 1030.200
## 15  NW 1003.200  1012.800 1018.000 1017.975  1023.200 1032.100
## 16 NNW  996.500  1017.025 1020.800 1019.732  1024.025 1031.000
##    wgd  rt   x.Min. x.1st Qu. x.Median   x.Mean x.3rd Qu.   x.Max.
## 1    N  No 1008.500  1019.450 1022.800 1022.016  1024.350 1032.200
## 2  NNE  No 1015.800  1017.350 1020.700 1023.071  1029.450 1031.400
## 3   NE  No 1011.800  1017.850 1020.400 1021.064  1024.150 1032.300
## 4  ENE  No 1006.600  1018.000 1021.100 1021.084  1023.200 1035.700
## 5    E  No 1010.700  1017.600 1022.350 1021.632  1025.350 1034.300
## 6  ESE  No 1012.200  1016.975 1025.650 1023.789  1029.925 1033.600
## 7   SE  No 1017.400  1021.575 1024.200 1023.967  1026.850 1029.500
## 8  SSE  No 1007.700  1011.350 1019.500 1018.513  1026.000 1027.200
## 9    S  No 1018.500  1020.800 1025.700 1023.967  1025.900 1029.000
## 10 SSW  No  999.400  1020.900 1022.800 1019.720  1027.700 1027.800
## 11  SW  No 1007.600  1011.050 1014.500 1015.933  1020.100 1025.700
## 12 WSW  No 1013.100  1015.800 1018.500 1018.500  1021.200 1023.900
## 13   W  No 1002.100  1013.750 1017.600 1017.371  1022.175 1032.900
## 14 WNW  No 1010.500  1014.475 1020.000 1019.570  1022.750 1030.200
## 15  NW  No 1003.200  1014.600 1018.750 1018.809  1023.750 1032.100
## 16 NNW  No 1011.700  1017.800 1022.500 1021.074  1024.150 1031.000
## 17   N Yes 1012.900  1014.625 1016.350 1016.350  1018.075 1019.800
## 18 NNE Yes 1013.900  1013.900 1013.900 1013.900  1013.900 1013.900
## 19  NE Yes 1008.700  1010.225 1011.750 1011.750  1013.275 1014.800
## 20 ENE Yes 1007.600  1009.500 1010.000 1010.780  1012.400 1014.400
## 21   E Yes 1016.800  1018.600 1020.400 1020.433  1022.250 1024.100
## 22 ESE Yes 1010.000  1014.000 1014.600 1016.560  1017.600 1026.600
## 23 SSE Yes 1015.000  1017.475 1018.600 1020.100  1021.225 1028.200
## 24   S Yes 1010.100  1012.950 1015.500 1015.271  1017.300 1020.800
## 25   W Yes 1006.300  1008.000 1009.550 1012.150  1016.500 1021.200
## 26 WNW Yes 1004.000  1006.900 1010.300 1010.420  1013.900 1017.000
## 27  NW Yes 1004.900  1009.500 1016.700 1015.229  1019.200 1027.800
## 28 NNW Yes  996.500  1010.200 1015.800 1014.511  1018.100 1025.700
## 'data.frame':    28 obs. of  3 variables:
##  $ wgd: Ord.factor w/ 16 levels "N"<"NNE"<"NE"<..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ rt : Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
##  $ x  : num [1:28, 1:6] 1008 1016 1012 1007 1011 ...

Come si vede qui sopra, la funzione aggregate() ritorna un data frame con 1 colonna per ogni variabile di gruppo, e una colonna-matrice (chiamata x) con i risultati dei calcoli delle statisiche descrittive.
Per ottenere un dataframe “normale” si deve intervenire in maniera appropriata:

##    wgd  rt   Min.  1st Qu.  Median     Mean  3rd Qu.   Max.
## 1    N  No 1008.5 1019.450 1022.80 1022.016 1024.350 1032.2
## 2  NNE  No 1015.8 1017.350 1020.70 1023.071 1029.450 1031.4
## 3   NE  No 1011.8 1017.850 1020.40 1021.064 1024.150 1032.3
## 4  ENE  No 1006.6 1018.000 1021.10 1021.084 1023.200 1035.7
## 5    E  No 1010.7 1017.600 1022.35 1021.632 1025.350 1034.3
## 6  ESE  No 1012.2 1016.975 1025.65 1023.789 1029.925 1033.6
## 7   SE  No 1017.4 1021.575 1024.20 1023.967 1026.850 1029.5
## 8  SSE  No 1007.7 1011.350 1019.50 1018.513 1026.000 1027.2
## 9    S  No 1018.5 1020.800 1025.70 1023.967 1025.900 1029.0
## 10 SSW  No  999.4 1020.900 1022.80 1019.720 1027.700 1027.8
## 11  SW  No 1007.6 1011.050 1014.50 1015.933 1020.100 1025.7
## 12 WSW  No 1013.1 1015.800 1018.50 1018.500 1021.200 1023.9
## 13   W  No 1002.1 1013.750 1017.60 1017.371 1022.175 1032.9
## 14 WNW  No 1010.5 1014.475 1020.00 1019.570 1022.750 1030.2
## 15  NW  No 1003.2 1014.600 1018.75 1018.809 1023.750 1032.1
## 16 NNW  No 1011.7 1017.800 1022.50 1021.074 1024.150 1031.0
## 17   N Yes 1012.9 1014.625 1016.35 1016.350 1018.075 1019.8
## 18 NNE Yes 1013.9 1013.900 1013.90 1013.900 1013.900 1013.9
## 19  NE Yes 1008.7 1010.225 1011.75 1011.750 1013.275 1014.8
## 20 ENE Yes 1007.6 1009.500 1010.00 1010.780 1012.400 1014.4
## 21   E Yes 1016.8 1018.600 1020.40 1020.433 1022.250 1024.1
## 22 ESE Yes 1010.0 1014.000 1014.60 1016.560 1017.600 1026.6
## 23 SSE Yes 1015.0 1017.475 1018.60 1020.100 1021.225 1028.2
## 24   S Yes 1010.1 1012.950 1015.50 1015.271 1017.300 1020.8
## 25   W Yes 1006.3 1008.000 1009.55 1012.150 1016.500 1021.2
## 26 WNW Yes 1004.0 1006.900 1010.30 1010.420 1013.900 1017.0
## 27  NW Yes 1004.9 1009.500 1016.70 1015.229 1019.200 1027.8
## 28 NNW Yes  996.5 1010.200 1015.80 1014.511 1018.100 1025.7
## 'data.frame':    28 obs. of  8 variables:
##  $ wgd    : Ord.factor w/ 16 levels "N"<"NNE"<"NE"<..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ rt     : Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Min.   : num  1008 1016 1012 1007 1011 ...
##  $ 1st Qu.: num  1019 1017 1018 1018 1018 ...
##  $ Median : num  1023 1021 1020 1021 1022 ...
##  $ Mean   : num  1022 1023 1021 1021 1022 ...
##  $ 3rd Qu.: num  1024 1029 1024 1023 1025 ...
##  $ Max.   : num  1032 1031 1032 1036 1034 ...

In ogni modo, con aggregate() si possono ottenere misure aggregate su combinazioni di livelli di più variabili categoriali:

##    wgd  rt Pressure9am.Min. Pressure9am.1st Qu. Pressure9am.Median
## 1    N  No         1008.500            1019.450           1022.800
## 2  NNE  No         1015.800            1017.350           1020.700
## 3   NE  No         1011.800            1017.850           1020.400
## 4  ENE  No         1006.600            1018.000           1021.100
## 5    E  No         1010.700            1017.600           1022.350
## 6  ESE  No         1012.200            1016.975           1025.650
## 7   SE  No         1017.400            1021.575           1024.200
## 8  SSE  No         1007.700            1011.350           1019.500
## 9    S  No         1018.500            1020.800           1025.700
## 10 SSW  No          999.400            1020.900           1022.800
## 11  SW  No         1007.600            1011.050           1014.500
## 12 WSW  No         1013.100            1015.800           1018.500
## 13   W  No         1002.100            1013.750           1017.600
## 14 WNW  No         1010.500            1014.475           1020.000
## 15  NW  No         1003.200            1014.600           1018.750
## 16 NNW  No         1011.700            1017.800           1022.500
## 17   N Yes         1012.900            1014.625           1016.350
## 18 NNE Yes         1013.900            1013.900           1013.900
## 19  NE Yes         1008.700            1010.225           1011.750
## 20 ENE Yes         1007.600            1009.500           1010.000
## 21   E Yes         1016.800            1018.600           1020.400
## 22 ESE Yes         1010.000            1014.000           1014.600
## 23 SSE Yes         1015.000            1017.475           1018.600
## 24   S Yes         1010.100            1012.950           1015.500
## 25   W Yes         1006.300            1008.000           1009.550
## 26 WNW Yes         1004.000            1006.900           1010.300
## 27  NW Yes         1004.900            1009.500           1016.700
## 28 NNW Yes          996.500            1010.200           1015.800
##    Pressure9am.Mean Pressure9am.3rd Qu. Pressure9am.Max. Pressure3pm.Min.
## 1          1022.016            1024.350         1032.200         1006.100
## 2          1023.071            1029.450         1031.400         1011.600
## 3          1021.064            1024.150         1032.300         1007.400
## 4          1021.084            1023.200         1035.700         1003.300
## 5          1021.632            1025.350         1034.300         1008.900
## 6          1023.789            1029.925         1033.600         1008.700
## 7          1023.967            1026.850         1029.500         1017.100
## 8          1018.513            1026.000         1027.200         1006.500
## 9          1023.967            1025.900         1029.000         1014.800
## 10         1019.720            1027.700         1027.800          998.900
## 11         1015.933            1020.100         1025.700         1003.000
## 12         1018.500            1021.200         1023.900         1009.500
## 13         1017.371            1022.175         1032.900          997.500
## 14         1019.570            1022.750         1030.200         1006.500
## 15         1018.809            1023.750         1032.100          997.700
## 16         1021.074            1024.150         1031.000         1010.400
## 17         1016.350            1018.075         1019.800         1008.300
## 18         1013.900            1013.900         1013.900         1009.500
## 19         1011.750            1013.275         1014.800         1006.000
## 20         1010.780            1012.400         1014.400         1005.000
## 21         1020.433            1022.250         1024.100         1015.000
## 22         1016.560            1017.600         1026.600         1007.800
## 23         1020.100            1021.225         1028.200         1014.100
## 24         1015.271            1017.300         1020.800         1008.400
## 25         1012.150            1016.500         1021.200         1002.300
## 26         1010.420            1013.900         1017.000         1001.800
## 27         1015.229            1019.200         1027.800         1001.500
## 28         1014.511            1018.100         1025.700          996.800
##    Pressure3pm.1st Qu. Pressure3pm.Median Pressure3pm.Mean Pressure3pm.3rd Qu.
## 1             1016.750           1019.100         1018.842            1021.950
## 2             1013.450           1019.200         1019.743            1026.300
## 3             1013.400           1017.150         1017.500            1020.400
## 4             1016.100           1018.600         1018.184            1020.000
## 5             1013.800           1018.450         1018.679            1022.750
## 6             1015.925           1023.450         1021.067            1026.900
## 7             1019.300           1021.950         1021.650            1023.500
## 8             1009.125           1015.450         1015.325            1022.050
## 9             1019.250           1022.700         1021.740            1024.950
## 10            1016.000           1019.300         1016.900            1024.800
## 11            1007.250           1011.500         1012.100            1016.650
## 12            1011.950           1014.400         1014.400            1016.850
## 13            1009.025           1014.650         1013.443            1018.900
## 14            1013.125           1016.950         1016.767            1020.400
## 15            1010.800           1014.700         1015.386            1019.850
## 16            1014.200           1018.000         1017.451            1020.650
## 17            1011.000           1013.700         1013.700            1016.400
## 18            1009.500           1009.500         1009.500            1009.500
## 19            1007.350           1008.700         1008.700            1010.050
## 20            1008.400           1009.100         1009.000            1011.000
## 21            1017.050           1019.100         1018.267            1019.900
## 22            1012.800           1014.900         1015.080            1016.800
## 23            1016.350           1017.800         1018.850            1020.300
## 24            1010.800           1014.500         1013.800            1016.250
## 25            1007.125           1008.250         1009.767            1012.450
## 26            1010.300           1012.700         1011.460            1014.900
## 27            1007.200           1013.700         1013.588            1018.200
## 28            1006.500           1013.400         1011.844            1014.100
##    Pressure3pm.Max.
## 1          1026.900
## 2          1027.900
## 3          1028.900
## 4          1031.900
## 5          1031.700
## 6          1033.200
## 7          1027.400
## 8          1023.900
## 9          1026.300
## 10         1025.500
## 11         1021.800
## 12         1019.300
## 13         1028.900
## 14         1024.800
## 15         1029.600
## 16         1028.000
## 17         1019.100
## 18         1009.500
## 19         1011.400
## 20         1011.500
## 21         1020.700
## 22         1023.100
## 23         1025.700
## 24         1019.600
## 25         1019.200
## 26         1017.600
## 27         1024.300
## 28         1022.300

Con la funzione by() si possono ottenere risultati simili a quelli ottenuti con aggregate():

## wgd: N
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 1.900   Min.   :1008   Min.   :1006  
##  1st Qu.: 8.650   1st Qu.:1019   1st Qu.:1017  
##  Median : 9.900   Median :1023   Median :1019  
##  Mean   : 9.374   Mean   :1022   Mean   :1019  
##  3rd Qu.:11.100   3rd Qu.:1024   3rd Qu.:1022  
##  Max.   :12.700   Max.   :1032   Max.   :1027  
## ------------------------------------------------------------- 
## wgd: NNE
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.600   Min.   :1016   Min.   :1012  
##  1st Qu.: 6.225   1st Qu.:1017   1st Qu.:1013  
##  Median : 7.800   Median :1021   Median :1019  
##  Mean   : 7.300   Mean   :1023   Mean   :1020  
##  3rd Qu.: 8.775   3rd Qu.:1029   3rd Qu.:1026  
##  Max.   :12.800   Max.   :1031   Max.   :1028  
##  NA's   :1                                     
## ------------------------------------------------------------- 
## wgd: NE
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.800   Min.   :1012   Min.   :1007  
##  1st Qu.: 9.200   1st Qu.:1018   1st Qu.:1013  
##  Median :10.750   Median :1020   Median :1017  
##  Mean   : 9.636   Mean   :1021   Mean   :1018  
##  3rd Qu.:11.625   3rd Qu.:1024   3rd Qu.:1020  
##  Max.   :13.600   Max.   :1032   Max.   :1029  
## ------------------------------------------------------------- 
## wgd: ENE
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.600   Min.   :1007   Min.   :1003  
##  1st Qu.: 6.800   1st Qu.:1018   1st Qu.:1016  
##  Median : 9.600   Median :1021   Median :1019  
##  Mean   : 8.456   Mean   :1021   Mean   :1018  
##  3rd Qu.:10.200   3rd Qu.:1023   3rd Qu.:1020  
##  Max.   :12.600   Max.   :1036   Max.   :1032  
## ------------------------------------------------------------- 
## wgd: E
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.000   Min.   :1011   Min.   :1009  
##  1st Qu.: 7.350   1st Qu.:1018   1st Qu.:1014  
##  Median : 9.250   Median :1022   Median :1018  
##  Mean   : 8.626   Mean   :1022   Mean   :1019  
##  3rd Qu.:11.450   3rd Qu.:1025   3rd Qu.:1023  
##  Max.   :13.000   Max.   :1034   Max.   :1032  
## ------------------------------------------------------------- 
## wgd: ESE
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.000   Min.   :1012   Min.   :1009  
##  1st Qu.: 3.950   1st Qu.:1017   1st Qu.:1016  
##  Median : 7.500   Median :1026   Median :1023  
##  Mean   : 6.517   Mean   :1024   Mean   :1021  
##  3rd Qu.: 8.400   3rd Qu.:1030   3rd Qu.:1027  
##  Max.   :12.500   Max.   :1034   Max.   :1033  
## ------------------------------------------------------------- 
## wgd: SE
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.000   Min.   :1017   Min.   :1017  
##  1st Qu.: 2.800   1st Qu.:1022   1st Qu.:1019  
##  Median : 7.350   Median :1024   Median :1022  
##  Mean   : 5.808   Mean   :1024   Mean   :1022  
##  3rd Qu.: 8.525   3rd Qu.:1027   3rd Qu.:1024  
##  Max.   :11.200   Max.   :1030   Max.   :1027  
## ------------------------------------------------------------- 
## wgd: SSE
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.800   Min.   :1008   Min.   :1006  
##  1st Qu.: 5.575   1st Qu.:1011   1st Qu.:1009  
##  Median : 9.850   Median :1020   Median :1015  
##  Mean   : 8.200   Mean   :1019   Mean   :1015  
##  3rd Qu.:11.225   3rd Qu.:1026   3rd Qu.:1022  
##  Max.   :13.300   Max.   :1027   Max.   :1024  
## ------------------------------------------------------------- 
## wgd: S
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 2.700   Min.   :1018   Min.   :1015  
##  1st Qu.: 5.600   1st Qu.:1021   1st Qu.:1019  
##  Median : 8.200   Median :1026   Median :1023  
##  Mean   : 7.813   Mean   :1024   Mean   :1022  
##  3rd Qu.:10.050   3rd Qu.:1026   3rd Qu.:1025  
##  Max.   :12.100   Max.   :1029   Max.   :1026  
## ------------------------------------------------------------- 
## wgd: SSW
## rt: No
##     Sunshine     Pressure9am      Pressure3pm    
##  Min.   :5.90   Min.   : 999.4   Min.   : 998.9  
##  1st Qu.:5.90   1st Qu.:1020.9   1st Qu.:1016.0  
##  Median :6.70   Median :1022.8   Median :1019.3  
##  Mean   :6.95   Mean   :1019.7   Mean   :1016.9  
##  3rd Qu.:7.75   3rd Qu.:1027.7   3rd Qu.:1024.8  
##  Max.   :8.50   Max.   :1027.8   Max.   :1025.5  
##  NA's   :1                                       
## ------------------------------------------------------------- 
## wgd: SW
## rt: No
##     Sunshine     Pressure9am    Pressure3pm  
##  Min.   :6.80   Min.   :1008   Min.   :1003  
##  1st Qu.:6.85   1st Qu.:1011   1st Qu.:1007  
##  Median :6.90   Median :1014   Median :1012  
##  Mean   :7.50   Mean   :1016   Mean   :1012  
##  3rd Qu.:7.85   3rd Qu.:1020   3rd Qu.:1017  
##  Max.   :8.80   Max.   :1026   Max.   :1022  
## ------------------------------------------------------------- 
## wgd: WSW
## rt: No
##     Sunshine      Pressure9am    Pressure3pm  
##  Min.   :11.30   Min.   :1013   Min.   :1010  
##  1st Qu.:11.38   1st Qu.:1016   1st Qu.:1012  
##  Median :11.45   Median :1018   Median :1014  
##  Mean   :11.45   Mean   :1018   Mean   :1014  
##  3rd Qu.:11.53   3rd Qu.:1021   3rd Qu.:1017  
##  Max.   :11.60   Max.   :1024   Max.   :1019  
## ------------------------------------------------------------- 
## wgd: W
## rt: No
##     Sunshine       Pressure9am    Pressure3pm    
##  Min.   : 0.200   Min.   :1002   Min.   : 997.5  
##  1st Qu.: 6.550   1st Qu.:1014   1st Qu.:1009.0  
##  Median : 8.250   Median :1018   Median :1014.6  
##  Mean   : 7.493   Mean   :1017   Mean   :1013.4  
##  3rd Qu.: 9.275   3rd Qu.:1022   3rd Qu.:1018.9  
##  Max.   :11.300   Max.   :1033   Max.   :1028.9  
## ------------------------------------------------------------- 
## wgd: WNW
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.000   Min.   :1010   Min.   :1006  
##  1st Qu.: 6.150   1st Qu.:1014   1st Qu.:1013  
##  Median : 8.050   Median :1020   Median :1017  
##  Mean   : 7.737   Mean   :1020   Mean   :1017  
##  3rd Qu.: 9.950   3rd Qu.:1023   3rd Qu.:1020  
##  Max.   :13.000   Max.   :1030   Max.   :1025  
## ------------------------------------------------------------- 
## wgd: NW
## rt: No
##     Sunshine       Pressure9am    Pressure3pm    
##  Min.   : 1.200   Min.   :1003   Min.   : 997.7  
##  1st Qu.: 7.100   1st Qu.:1015   1st Qu.:1010.8  
##  Median : 8.900   Median :1019   Median :1014.7  
##  Mean   : 8.534   Mean   :1019   Mean   :1015.4  
##  3rd Qu.:10.400   3rd Qu.:1024   3rd Qu.:1019.9  
##  Max.   :13.100   Max.   :1032   Max.   :1029.6  
## ------------------------------------------------------------- 
## wgd: NNW
## rt: No
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.500   Min.   :1012   Min.   :1010  
##  1st Qu.: 5.850   1st Qu.:1018   1st Qu.:1014  
##  Median : 9.200   Median :1022   Median :1018  
##  Mean   : 8.394   Mean   :1021   Mean   :1017  
##  3rd Qu.:10.550   3rd Qu.:1024   3rd Qu.:1021  
##  Max.   :13.600   Max.   :1031   Max.   :1028  
## ------------------------------------------------------------- 
## wgd: N
## rt: Yes
##     Sunshine      Pressure9am    Pressure3pm  
##  Min.   :7.200   Min.   :1013   Min.   :1008  
##  1st Qu.:7.425   1st Qu.:1015   1st Qu.:1011  
##  Median :7.650   Median :1016   Median :1014  
##  Mean   :7.650   Mean   :1016   Mean   :1014  
##  3rd Qu.:7.875   3rd Qu.:1018   3rd Qu.:1016  
##  Max.   :8.100   Max.   :1020   Max.   :1019  
## ------------------------------------------------------------- 
## wgd: NNE
## rt: Yes
##     Sunshine   Pressure9am    Pressure3pm  
##  Min.   :12   Min.   :1014   Min.   :1010  
##  1st Qu.:12   1st Qu.:1014   1st Qu.:1010  
##  Median :12   Median :1014   Median :1010  
##  Mean   :12   Mean   :1014   Mean   :1010  
##  3rd Qu.:12   3rd Qu.:1014   3rd Qu.:1010  
##  Max.   :12   Max.   :1014   Max.   :1010  
## ------------------------------------------------------------- 
## wgd: NE
## rt: Yes
##     Sunshine    Pressure9am    Pressure3pm  
##  Min.   :0.0   Min.   :1009   Min.   :1006  
##  1st Qu.:2.2   1st Qu.:1010   1st Qu.:1007  
##  Median :4.4   Median :1012   Median :1009  
##  Mean   :4.4   Mean   :1012   Mean   :1009  
##  3rd Qu.:6.6   3rd Qu.:1013   3rd Qu.:1010  
##  Max.   :8.8   Max.   :1015   Max.   :1011  
## ------------------------------------------------------------- 
## wgd: ENE
## rt: Yes
##     Sunshine      Pressure9am    Pressure3pm  
##  Min.   : 0.00   Min.   :1008   Min.   :1005  
##  1st Qu.: 0.40   1st Qu.:1010   1st Qu.:1008  
##  Median : 5.60   Median :1010   Median :1009  
##  Mean   : 5.18   Mean   :1011   Mean   :1009  
##  3rd Qu.: 9.70   3rd Qu.:1012   3rd Qu.:1011  
##  Max.   :10.20   Max.   :1014   Max.   :1012  
## ------------------------------------------------------------- 
## wgd: E
## rt: Yes
##     Sunshine      Pressure9am    Pressure3pm  
##  Min.   : 5.60   Min.   :1017   Min.   :1015  
##  1st Qu.: 6.65   1st Qu.:1019   1st Qu.:1017  
##  Median : 7.70   Median :1020   Median :1019  
##  Mean   : 8.30   Mean   :1020   Mean   :1018  
##  3rd Qu.: 9.65   3rd Qu.:1022   3rd Qu.:1020  
##  Max.   :11.60   Max.   :1024   Max.   :1021  
## ------------------------------------------------------------- 
## wgd: ESE
## rt: Yes
##     Sunshine      Pressure9am    Pressure3pm  
##  Min.   : 0.30   Min.   :1010   Min.   :1008  
##  1st Qu.: 0.60   1st Qu.:1014   1st Qu.:1013  
##  Median : 3.60   Median :1015   Median :1015  
##  Mean   : 4.04   Mean   :1017   Mean   :1015  
##  3rd Qu.: 5.10   3rd Qu.:1018   3rd Qu.:1017  
##  Max.   :10.60   Max.   :1027   Max.   :1023  
## ------------------------------------------------------------- 
## wgd: SE
## rt: Yes
## NULL
## ------------------------------------------------------------- 
## wgd: SSE
## rt: Yes
##     Sunshine     Pressure9am    Pressure3pm  
##  Min.   : 0.2   Min.   :1015   Min.   :1014  
##  1st Qu.: 2.0   1st Qu.:1017   1st Qu.:1016  
##  Median : 4.4   Median :1019   Median :1018  
##  Mean   : 4.9   Mean   :1020   Mean   :1019  
##  3rd Qu.: 7.3   3rd Qu.:1021   3rd Qu.:1020  
##  Max.   :10.6   Max.   :1028   Max.   :1026  
## ------------------------------------------------------------- 
## wgd: S
## rt: Yes
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.900   Min.   :1010   Min.   :1008  
##  1st Qu.: 6.050   1st Qu.:1013   1st Qu.:1011  
##  Median : 9.100   Median :1016   Median :1014  
##  Mean   : 7.643   Mean   :1015   Mean   :1014  
##  3rd Qu.: 9.700   3rd Qu.:1017   3rd Qu.:1016  
##  Max.   :12.000   Max.   :1021   Max.   :1020  
## ------------------------------------------------------------- 
## wgd: SSW
## rt: Yes
## NULL
## ------------------------------------------------------------- 
## wgd: SW
## rt: Yes
## NULL
## ------------------------------------------------------------- 
## wgd: WSW
## rt: Yes
## NULL
## ------------------------------------------------------------- 
## wgd: W
## rt: Yes
##     Sunshine      Pressure9am    Pressure3pm  
##  Min.   :0.000   Min.   :1006   Min.   :1002  
##  1st Qu.:5.675   1st Qu.:1008   1st Qu.:1007  
##  Median :6.800   Median :1010   Median :1008  
##  Mean   :6.150   Mean   :1012   Mean   :1010  
##  3rd Qu.:8.375   3rd Qu.:1016   3rd Qu.:1012  
##  Max.   :9.100   Max.   :1021   Max.   :1019  
## ------------------------------------------------------------- 
## wgd: WNW
## rt: Yes
##     Sunshine     Pressure9am    Pressure3pm  
##  Min.   : 7.5   Min.   :1004   Min.   :1002  
##  1st Qu.: 9.3   1st Qu.:1007   1st Qu.:1010  
##  Median : 9.7   Median :1010   Median :1013  
##  Mean   :10.2   Mean   :1010   Mean   :1011  
##  3rd Qu.:11.0   3rd Qu.:1014   3rd Qu.:1015  
##  Max.   :13.5   Max.   :1017   Max.   :1018  
## ------------------------------------------------------------- 
## wgd: NW
## rt: Yes
##     Sunshine       Pressure9am    Pressure3pm  
##  Min.   : 0.000   Min.   :1005   Min.   :1002  
##  1st Qu.: 4.050   1st Qu.:1010   1st Qu.:1007  
##  Median : 7.800   Median :1017   Median :1014  
##  Mean   : 6.619   Mean   :1015   Mean   :1014  
##  3rd Qu.: 8.350   3rd Qu.:1019   3rd Qu.:1018  
##  Max.   :11.800   Max.   :1028   Max.   :1024  
##  NA's   :1                                     
## ------------------------------------------------------------- 
## wgd: NNW
## rt: Yes
##     Sunshine       Pressure9am      Pressure3pm    
##  Min.   : 0.000   Min.   : 996.5   Min.   : 996.8  
##  1st Qu.: 4.900   1st Qu.:1010.2   1st Qu.:1006.5  
##  Median : 6.000   Median :1015.8   Median :1013.4  
##  Mean   : 6.556   Mean   :1014.5   Mean   :1011.8  
##  3rd Qu.: 8.500   3rd Qu.:1018.1   3rd Qu.:1014.1  
##  Max.   :13.200   Max.   :1025.7   Max.   :1022.3

Package più recenti (per es., dplyr) permettono di sviluppare analisi per gruppo in maniera molto semplice e chiara:

## # A tibble: 29 x 5
## # Groups:   WindGustDir [17]
##    WindGustDir RainToday count mean_pressure9am mean_pressure3pm
##    <ord>       <fct>     <int>            <dbl>            <dbl>
##  1 N           No           19            1022.            1019.
##  2 N           Yes           2            1016.            1014.
##  3 NNE         No            7            1023.            1020.
##  4 NNE         Yes           1            1014.            1010.
##  5 NE          No           14            1021.            1018.
##  6 NE          Yes           2            1012.            1009.
##  7 ENE         No           25            1021.            1018.
##  8 ENE         Yes           5            1011.            1009 
##  9 E           No           34            1022.            1019.
## 10 E           Yes           3            1020.            1018.
## # … with 19 more rows

Nell’esempio qui sopra, l’operatore di “pipe” %>% serve per “passare al primo argomento della funzione alla sua destra” i valori che si trovano alla sua sinistra.
Pertanto, nell’esempio, il codice può essere così “tradotto”:

  • prendi il data frame wea
  • passalo come primo argomento alla funzione group_by(), con cui dichiari che le successive operazioni dovranno essere eseguire per gruppi, definiti incrociando i valori delle colonne WindGustDir e RainToday
  • passa il risultato della precedente operazione come primo argomento alla funzione summarise(), che calcola il numero di osservazioni, il valore medio di Pressure9am e il valore medio di Pressure3pm
  • assegna tutto il risultato di questa catena di operazioni all’oggetto che chiamerai res1.

Infine, volendo calcolare frequenze, table() ritorna la tabella delle frequenze per una o più variabili categoriali (incrociate). Se si desidera calcolare la tabella delle frequenze relative, si può applicare la funzione prop.table() all’output di table(). Col parametro margin si può scegliere se calcolare frequenze relative di riga o di colonna:

##      
##       No Yes
##   N   19   2
##   NNE  7   1
##   NE  14   2
##   ENE 25   5
##   E   34   3
##   ESE 18   5
##   SE  12   0
##   SSE  8   4
##   S   15   7
##   SSW  5   0
##   SW   3   0
##   WSW  2   0
##   W   14   6
##   WNW 30   5
##   NW  56  17
##   NNW 35   9
##      
##                No         Yes
##   N   0.052341598 0.005509642
##   NNE 0.019283747 0.002754821
##   NE  0.038567493 0.005509642
##   ENE 0.068870523 0.013774105
##   E   0.093663912 0.008264463
##   ESE 0.049586777 0.013774105
##   SE  0.033057851 0.000000000
##   SSE 0.022038567 0.011019284
##   S   0.041322314 0.019283747
##   SSW 0.013774105 0.000000000
##   SW  0.008264463 0.000000000
##   WSW 0.005509642 0.000000000
##   W   0.038567493 0.016528926
##   WNW 0.082644628 0.013774105
##   NW  0.154269972 0.046831956
##   NNW 0.096418733 0.024793388
##      
##                No         Yes
##   N   0.063973064 0.030303030
##   NNE 0.023569024 0.015151515
##   NE  0.047138047 0.030303030
##   ENE 0.084175084 0.075757576
##   E   0.114478114 0.045454545
##   ESE 0.060606061 0.075757576
##   SE  0.040404040 0.000000000
##   SSE 0.026936027 0.060606061
##   S   0.050505051 0.106060606
##   SSW 0.016835017 0.000000000
##   SW  0.010101010 0.000000000
##   WSW 0.006734007 0.000000000
##   W   0.047138047 0.090909091
##   WNW 0.101010101 0.075757576
##   NW  0.188552189 0.257575758
##   NNW 0.117845118 0.136363636
##      
##               No        Yes
##   N   0.90476190 0.09523810
##   NNE 0.87500000 0.12500000
##   NE  0.87500000 0.12500000
##   ENE 0.83333333 0.16666667
##   E   0.91891892 0.08108108
##   ESE 0.78260870 0.21739130
##   SE  1.00000000 0.00000000
##   SSE 0.66666667 0.33333333
##   S   0.68181818 0.31818182
##   SSW 1.00000000 0.00000000
##   SW  1.00000000 0.00000000
##   WSW 1.00000000 0.00000000
##   W   0.70000000 0.30000000
##   WNW 0.85714286 0.14285714
##   NW  0.76712329 0.23287671
##   NNW 0.79545455 0.20454545