Universidad de Cuenca
Material Extra

Johanna Orellana-Alvear (MSc)
johanna.orellana@ucuenca.edu.ec

Curso completo en: http://rpubs.com/Johanna_Orellana_Alvear/programacion_r_indice



Una revisión y ejecución secuencial para trabajar con un data frame.

Implementación secuencial

Abrir el archivo y obtener estadísticos generales

df.observaciones <- read.table("observaciones_2003.csv", header = TRUE, stringsAsFactors = FALSE)
summary(df.observaciones)
##     FECHA               VALOR           STATUS            ESTACION        
##  Length:8030        Min.   : 0.000   Length:8030        Length:8030       
##  Class :character   1st Qu.: 0.000   Class :character   Class :character  
##  Mode  :character   Median : 0.000   Mode  :character   Mode  :character  
##                     Mean   : 1.988                                        
##                     3rd Qu.: 1.000                                        
##                     Max.   :91.600                                        
##                     NA's   :1786                                          
##       year           day            month       
##  Min.   :2003   Min.   : 1.00   Min.   : 1.000  
##  1st Qu.:2003   1st Qu.: 8.00   1st Qu.: 4.000  
##  Median :2003   Median :16.00   Median : 7.000  
##  Mean   :2003   Mean   :15.72   Mean   : 6.526  
##  3rd Qu.:2003   3rd Qu.:23.00   3rd Qu.:10.000  
##  Max.   :2003   Max.   :31.00   Max.   :12.000  
## 

Manipular la fecha

fechas <- strptime(df.observaciones$FECHA, format="%d/%m/%Y")
df.observaciones$FECHA <- as.POSIXct(fechas)  

Recuperar el mes y el año a partir de la fecha

df_events_month <- as.numeric(format(df.observaciones$FECHA,"%m"))
df_events_year <- as.numeric(format(df.observaciones$FECHA,"%Y"))

Unir los nuevos vectores al data frame

df.observaciones = cbind(df.observaciones,df_events_month)
df.observaciones = cbind(df.observaciones,df_events_year)
head(df.observaciones)
##           FECHA VALOR STATUS ESTACION year day month df_events_month
## 7671 2003-01-01     0            M012 2003   1     1               1
## 7672 2003-01-02     0            M012 2003   2     1               1
## 7673 2003-01-03     0            M012 2003   3     1               1
## 7674 2003-01-04     0            M012 2003   4     1               1
## 7675 2003-01-05     0            M012 2003   5     1               1
## 7676 2003-01-06     0            M012 2003   6     1               1
##      df_events_year
## 7671           2003
## 7672           2003
## 7673           2003
## 7674           2003
## 7675           2003
## 7676           2003

Agregaciones por uno y dos campos

sd_VALOR_monthly <- aggregate(VALOR ~ month, data = df.observaciones, sd)
sd_VALOR_monthly
##    month     VALOR
## 1      1  4.793814
## 2      2  7.401479
## 3      3 10.284249
## 4      4  8.289255
## 5      5  6.885316
## 6      6  4.416878
## 7      7  3.150891
## 8      8  2.220939
## 9      9  2.862725
## 10    10  3.130080
## 11    11  4.156379
## 12    12  6.350809
sd_VALOR_month_estacion <- aggregate(VALOR ~ month + ESTACION, data = df.observaciones, sd)
sd_VALOR_month_estacion
##     month ESTACION       VALOR
## 1       1     M012  3.29349963
## 2       2     M012  4.24854005
## 3       3     M012  2.25483471
## 4       4     M012  0.00000000
## 5       5     M012  0.79498428
## 6       6     M012  5.70178435
## 7       7     M012  0.99213032
## 8       8     M012  0.00000000
## 9       9     M012  0.00000000
## 10     10     M012  0.00000000
## 11     11     M012  0.00000000
## 12     12     M012  5.55041160
## 13      1     M040  1.63062096
## 14      2     M040  5.46680580
## 15      3     M040  8.42174477
## 16      4     M040  0.80971827
## 17      5     M040  2.25709872
## 18      6     M040  0.80155022
## 19      7     M040  0.99822423
## 20      8     M040  0.99119782
## 21      9     M040  0.85940370
## 22     10     M040  1.22745475
## 23     11     M040  2.71135543
## 24     12     M040  1.32984759
## 25      1     M142  2.11500527
## 26      2     M142  3.00237120
## 27      3     M142  6.02654344
## 28      4     M142  5.91390724
## 29      5     M142  3.74769033
## 30      6     M142  1.54461988
## 31      7     M142  0.38329071
## 32      8     M142  0.80111481
## 33      9     M142  4.19191340
## 34     10     M142  2.93606788
## 35     11     M142  4.55061067
## 36     12     M142  5.21974951
## 37      1     M180  7.41619399
## 38      2     M180  6.99485227
## 39      3     M180 15.32396465
## 40      4     M180 12.50248757
## 41      5     M180  4.64373552
## 42      6     M180  1.16751529
## 43      7     M180  0.49991397
## 44      8     M180  1.45431505
## 45      9     M180  0.09247553
## 46     10     M180  1.52155127
## 47     11     M180  8.62229436
## 48     12     M180  6.30319939
## 49      1     M185  2.01373065
## 50      2     M185  2.03639402
## 51      3     M185  2.35731872
## 52      4     M185  0.32127305
## 53      5     M185  0.68154396
## 54      6     M185  1.62356416
## 55      1     M232  6.28210122
## 56      2     M232 16.44262592
## 57      3     M232 19.37375678
## 58      4     M232  7.79000428
## 59      5     M232  3.16591729
## 60      6     M232  0.47499546
## 61      7     M232  0.17960530
## 62      8     M232  0.00000000
## 63      9     M232  0.00000000
## 64     10     M232  0.00000000
## 65     11     M232  2.13656992
## 66     12     M232 10.11493200
## 67      1     M239  4.98992964
## 68      2     M239 11.58742477
## 69      3     M239 14.07134433
## 70      4     M239 11.75393551
## 71      5     M239  2.49333736
## 72      6     M239  0.36853235
## 73      7     M239  0.43155134
## 74      8     M239  1.29315817
## 75      9     M239  0.00000000
## 76     10     M239  1.45228778
## 77     11     M239  5.60656840
## 78     12     M239  4.54771359
## 79      1     M292  3.17192998
## 80      2     M292  5.98411035
## 81      3     M292  9.85943465
## 82      4     M292  0.58467989
## 83      5     M292  0.43373844
## 84      6     M292  1.30227721
## 85      7     M292  0.43901160
## 86      8     M292  0.54514475
## 87      9     M292  0.96165566
## 88     10     M292  0.95063080
## 89     11     M292  1.26156261
## 90     12     M292  3.04142015
## 91      1     M418  1.77150686
## 92      2     M418  5.78775847
## 93      3     M418  5.65601402
## 94      4     M418  3.18287263
## 95      5     M418  1.88656256
## 96      6     M418  4.16096253
## 97      7     M418  2.14813247
## 98      8     M418  0.68235834
## 99      9     M418  3.17333720
## 100    10     M418  2.30294809
## 101    11     M418  3.37571448
## 102    12     M418  6.66569294
## 103     1     M419  3.65092123
## 104     4     M419  8.87146336
## 105     5     M419  5.46092473
## 106     6     M419  5.22260890
## 107     7     M419  0.96986863
## 108     8     M419  0.00000000
## 109     9     M419  1.69793993
## 110    12     M419  9.30228322
## 111     1     M420  1.01309703
## 112     2     M420  4.07202353
## 113     3     M420  7.39937370
## 114     4     M420  6.79281991
## 115     5     M420  1.96228964
## 116     6     M420  2.78254204
## 117     7     M420  1.46462957
## 118     8     M420  0.27951571
## 119     9     M420  3.58376929
## 120    10     M420  5.53868118
## 121    11     M420  6.00186657
## 122    12     M420  3.05807586
## 123     1     M421  0.67250135
## 124     2     M421  0.00000000
## 125     3     M421  3.59478116
## 126     4     M421  2.24382678
## 127     5     M421  3.09476492
## 128     6     M421  1.02780315
## 129     7     M421  1.50460941
## 130     8     M421  0.76269189
## 131     9     M421  2.02244873
## 132    10     M421  0.14088812
## 133    11     M421  4.25230837
## 134    12     M421  0.64571374
## 135     1     M422  3.13593120
## 136     2     M422  2.52212170
## 137     3     M422  5.27392857
## 138     4     M422  3.42402096
## 139     5     M422  0.54736907
## 140     6     M422  1.18313824
## 141     7     M422  1.26531903
## 142     8     M422  0.00000000
## 143     9     M422  0.13321834
## 144    10     M422  1.32110250
## 145    11     M422  1.33202810
## 146    12     M422  1.92290663
## 147     1     M432  3.94528710
## 148     2     M432  5.93984394
## 149     3     M432  5.11724892
## 150     4     M432  5.88178955
## 151     6     M432  3.58711135
## 152     7     M432  3.81536791
## 153     8     M432  4.70942318
## 154     9     M432  2.32602715
## 155    10     M432  4.94694649
## 156    11     M432  4.04317077
## 157    12     M432  7.05279324
## 158     1     M481  3.59338999
## 159     2     M481  6.07558650
## 160     3     M481  5.00462152
## 161     4     M481  2.33614527
## 162     5     M481  1.87801084
## 163     6     M481  1.23215539
## 164     7     M481  0.53801707
## 165     8     M481  0.60571986
## 166     9     M481  0.40316278
## 167    10     M481  0.65253847
## 168    11     M481  3.82539157
## 169    12     M481  5.66402342
## 170     1     M482  4.43967692
## 171     2     M482  5.59233590
## 172     3     M482  1.45544953
## 173     4     M482  1.27097782
## 174     5     M482  0.00000000
## 175     1     M503  6.44488628
## 176     2     M503  3.93789082
## 177     3     M503  6.54588765
## 178     4     M503 11.73198987
## 179     5     M503 21.71245963
## 180     6     M503 13.32699965
## 181     7     M503  9.64348462
## 182     8     M503  6.22563207
## 183     9     M503  8.11642580
## 184    10     M503  7.86132086
## 185    11     M503  5.20422132
## 186    12     M503  9.84506535
## 187     1     M760  8.19316526
## 188     2     M760 12.21389182
## 189     3     M760 17.37802963
## 190     4     M760 15.77803690
## 191     5     M760  3.05892665
## 192     6     M760  1.88406811
## 193     7     M760  0.38857335
## 194     8     M760  0.00000000
## 195     9     M760  0.00000000
## 196    10     M760  0.69923153
## 197    11     M760  0.59442815
## 198    12     M760  7.79682455
## 199     1     M773  7.93775516
## 200     2     M773  7.07096586
## 201     3     M773 15.81572445
## 202     4     M773 13.97183579
## 203     5     M773  2.08105639
## 204     6     M773  0.93747644
## 205     7     M773  1.22556110
## 206     8     M773  0.64051391
## 207     9     M773  0.20468647
## 208    10     M773  0.38873935
## 209    11     M773  3.08246990
## 210    12     M773  4.85706534

Comandos útiles

data.table

setwd("~/Documents/R_WORKSPACE/Markdown-HTML")
library(data.table)
## Warning: package 'data.table' was built under R version 3.1.3
df_events_results <- read.table("df_events_results.txt", sep = "\t")
head(df_events_results)
##     id          start_date            end_date duration rain_acc month
## 22   1 2012-11-09 09:45:00 2012-11-09 09:55:00       15   0.2844   Nov
## 65   2 2012-11-09 13:00:00 2012-11-09 13:50:00       55   0.4796   Nov
## 294  3 2012-11-10 07:55:00 2012-11-10 14:05:00      375  23.1356   Nov
## 560  4 2012-11-11 05:50:00 2012-11-11 08:05:00      140  36.8400   Nov
## 586  5 2012-11-11 08:40:00 2012-11-11 09:00:00       25   4.4042   Nov
## 608  6 2012-11-11 10:15:00 2012-11-11 12:25:00      135  15.2808   Nov
##     year   season Rainrate ReflectivityZ                       SYNOP
## 22  2012 Less Wet  0.25206     96.872387       continuous light rain
## 65  2012 Less Wet  0.19694      4.850651 continuous moderate drizzle
## 294 2012 Less Wet  2.64290    651.628394    continuous moderate rain
## 560 2012 Less Wet  4.12774    534.810592    continuous moderate rain
## 586 2012 Less Wet  2.68848    329.306270    continuous moderate rain
## 608 2012 Less Wet  2.11760    189.234362    continuous moderate rain
##          manualClass         a         b
## 22        Light Rain 894.20020 1.6138602
## 65  Moderate Drizzle  10.89331 0.7622195
## 294    Moderate Rain 106.95900 1.2848527
## 560    Moderate Rain  74.50780 1.2024312
## 586    Moderate Rain 100.95553 1.1285168
## 608       Light Rain  54.62488 1.1185234

Para trabajar con esta librería el objeto debe ser de la clase data.table. Dos maneras de obtener la información en este formato.

  1. Convertir el data frame en un data.table:
df_events_results <- as.data.table(df_events_results)
  1. Leer el archivo de texto usando el comando fread. Normalmente la lectura de los encabezados usando este comando es automático al leer archivos con extensión .DAT (.dat).

Estructura

El comando DT[i,j,by] tiene 3 partes: i, j y by. La i corresponde a WHERE, j a SELECT y by a GROUP BY.

df_events_results[, mean(duration), by = year]
##    year       V1
## 1: 2012 135.2778
## 2: 2013 165.8617
## 3: 2014 166.0702
df_events_results[, mean(duration), by = month]
##     month       V1
##  1:   Nov 113.0682
##  2:   Dec 136.2838
##  3:   Jan 226.2044
##  4:   Feb 149.9643
##  5:   Mar 175.5429
##  6:   Apr 147.6797
##  7:   May 142.5459
##  8:   Jun 197.1667
##  9:   Jul 186.5774
## 10:   Aug 179.9367
## 11:   Sep 149.3077
## 12:   Oct 126.5493

El campo se ha creado con un valor por defecto. Para asignar un nombre al campo nuevo donde se almacenará la media de la duración usamos el símbolo :=

df_events_results[, medDur := mean(duration), by = month]
##         id          start_date            end_date duration rain_acc month
##    1:    1 2012-11-09 09:45:00 2012-11-09 09:55:00       15   0.2844   Nov
##    2:    2 2012-11-09 13:00:00 2012-11-09 13:50:00       55   0.4796   Nov
##    3:    3 2012-11-10 07:55:00 2012-11-10 14:05:00      375  23.1356   Nov
##    4:    4 2012-11-11 05:50:00 2012-11-11 08:05:00      140  36.8400   Nov
##    5:    5 2012-11-11 08:40:00 2012-11-11 09:00:00       25   4.4042   Nov
##   ---                                                                     
## 1588: 1730 2014-08-01 09:25:00 2014-08-01 10:00:00       40   0.4486   Aug
## 1589: 1731 2014-08-02 07:45:00 2014-08-02 08:25:00       45   0.5080   Aug
## 1590: 1732 2014-08-02 09:25:00 2014-08-02 10:10:00       50   1.0062   Aug
## 1591: 1733 2014-08-02 18:55:00 2014-08-02 19:30:00       40   0.1470   Aug
## 1592: 1734 2014-08-02 20:05:00 2014-08-02 21:25:00       85   3.7468   Aug
##       year   season  Rainrate ReflectivityZ                       SYNOP
##    1: 2012 Less Wet 0.2520600    96.8723867       continuous light rain
##    2: 2012 Less Wet 0.1969400     4.8506507 continuous moderate drizzle
##    3: 2012 Less Wet 2.6429000   651.6283941    continuous moderate rain
##    4: 2012 Less Wet 4.1277400   534.8105921    continuous moderate rain
##    5: 2012 Less Wet 2.6884800   329.3062702    continuous moderate rain
##   ---                                                                  
## 1588: 2014 Less Wet 0.1945500     3.0687860 continuous moderate drizzle
## 1589: 2014 Less Wet 0.3350533    10.8817815      light drizzle and rain
## 1590: 2014 Less Wet 0.5526267    39.3640704    continuous moderate rain
## 1591: 2014 Less Wet 0.0716000     0.4111497    continuous light drizzle
## 1592: 2014 Less Wet 0.4664000    12.3140241      light drizzle and rain
##            manualClass          a         b   medDur
##    1:       Light Rain 894.200196 1.6138602 113.0682
##    2: Moderate Drizzle  10.893310 0.7622195 113.0682
##    3:    Moderate Rain 106.959000 1.2848527 113.0682
##    4:    Moderate Rain  74.507797 1.2024312 113.0682
##    5:    Moderate Rain 100.955529 1.1285168 113.0682
##   ---                                               
## 1588: Moderate Drizzle  15.537473 1.0350537 179.9367
## 1589: Moderate Drizzle  17.194142 0.8610099 179.9367
## 1590:       Light Rain  44.383010 1.0559073 179.9367
## 1591:    Light Drizzle   1.167704 0.4564574 179.9367
## 1592: Moderate Drizzle  24.371598 1.3000548 179.9367
head(df_events_results)
##    id          start_date            end_date duration rain_acc month year
## 1:  1 2012-11-09 09:45:00 2012-11-09 09:55:00       15   0.2844   Nov 2012
## 2:  2 2012-11-09 13:00:00 2012-11-09 13:50:00       55   0.4796   Nov 2012
## 3:  3 2012-11-10 07:55:00 2012-11-10 14:05:00      375  23.1356   Nov 2012
## 4:  4 2012-11-11 05:50:00 2012-11-11 08:05:00      140  36.8400   Nov 2012
## 5:  5 2012-11-11 08:40:00 2012-11-11 09:00:00       25   4.4042   Nov 2012
## 6:  6 2012-11-11 10:15:00 2012-11-11 12:25:00      135  15.2808   Nov 2012
##      season Rainrate ReflectivityZ                       SYNOP
## 1: Less Wet  0.25206     96.872387       continuous light rain
## 2: Less Wet  0.19694      4.850651 continuous moderate drizzle
## 3: Less Wet  2.64290    651.628394    continuous moderate rain
## 4: Less Wet  4.12774    534.810592    continuous moderate rain
## 5: Less Wet  2.68848    329.306270    continuous moderate rain
## 6: Less Wet  2.11760    189.234362    continuous moderate rain
##         manualClass         a         b   medDur
## 1:       Light Rain 894.20020 1.6138602 113.0682
## 2: Moderate Drizzle  10.89331 0.7622195 113.0682
## 3:    Moderate Rain 106.95900 1.2848527 113.0682
## 4:    Moderate Rain  74.50780 1.2024312 113.0682
## 5:    Moderate Rain 100.95553 1.1285168 113.0682
## 6:       Light Rain  54.62488 1.1185234 113.0682

Ahora vamos a modificar este cálculo para obtener la media de la duración de los eventos en cada mes, pero considerando únicamente aquellos menores a 100 minutos.

df_events_results[duration<=100, medDur := mean(duration), by = month]
##         id          start_date            end_date duration rain_acc month
##    1:    1 2012-11-09 09:45:00 2012-11-09 09:55:00       15   0.2844   Nov
##    2:    2 2012-11-09 13:00:00 2012-11-09 13:50:00       55   0.4796   Nov
##    3:    3 2012-11-10 07:55:00 2012-11-10 14:05:00      375  23.1356   Nov
##    4:    4 2012-11-11 05:50:00 2012-11-11 08:05:00      140  36.8400   Nov
##    5:    5 2012-11-11 08:40:00 2012-11-11 09:00:00       25   4.4042   Nov
##   ---                                                                     
## 1588: 1730 2014-08-01 09:25:00 2014-08-01 10:00:00       40   0.4486   Aug
## 1589: 1731 2014-08-02 07:45:00 2014-08-02 08:25:00       45   0.5080   Aug
## 1590: 1732 2014-08-02 09:25:00 2014-08-02 10:10:00       50   1.0062   Aug
## 1591: 1733 2014-08-02 18:55:00 2014-08-02 19:30:00       40   0.1470   Aug
## 1592: 1734 2014-08-02 20:05:00 2014-08-02 21:25:00       85   3.7468   Aug
##       year   season  Rainrate ReflectivityZ                       SYNOP
##    1: 2012 Less Wet 0.2520600    96.8723867       continuous light rain
##    2: 2012 Less Wet 0.1969400     4.8506507 continuous moderate drizzle
##    3: 2012 Less Wet 2.6429000   651.6283941    continuous moderate rain
##    4: 2012 Less Wet 4.1277400   534.8105921    continuous moderate rain
##    5: 2012 Less Wet 2.6884800   329.3062702    continuous moderate rain
##   ---                                                                  
## 1588: 2014 Less Wet 0.1945500     3.0687860 continuous moderate drizzle
## 1589: 2014 Less Wet 0.3350533    10.8817815      light drizzle and rain
## 1590: 2014 Less Wet 0.5526267    39.3640704    continuous moderate rain
## 1591: 2014 Less Wet 0.0716000     0.4111497    continuous light drizzle
## 1592: 2014 Less Wet 0.4664000    12.3140241      light drizzle and rain
##            manualClass          a         b    medDur
##    1:       Light Rain 894.200196 1.6138602  51.25000
##    2: Moderate Drizzle  10.893310 0.7622195  51.25000
##    3:    Moderate Rain 106.959000 1.2848527 113.06818
##    4:    Moderate Rain  74.507797 1.2024312 113.06818
##    5:    Moderate Rain 100.955529 1.1285168  51.25000
##   ---                                                
## 1588: Moderate Drizzle  15.537473 1.0350537  49.07895
## 1589: Moderate Drizzle  17.194142 0.8610099  49.07895
## 1590:       Light Rain  44.383010 1.0559073  49.07895
## 1591:    Light Drizzle   1.167704 0.4564574  49.07895
## 1592: Moderate Drizzle  24.371598 1.3000548  49.07895

La asignación de una clave en el data.table permite optimizar los tiempos de búsqueda para ordenar, filtrar y buscar elementos en el objeto data.table. Esta indexación es similar a la que se utiliza en bases de datos formales. Pruebe la diferencia de tiempos cuando se designa una clave de tabla y cuando se omite este comando. Actividad: ¿Cómo se designa una clave combinada (Ejm. fecha inicio y fecha fin)?

setkey(df_events_results, id)

Merge

Cargaremos los dos archivos de precipitación y temperatura en data frames diferentes para trabajarlos.

df_prec <- read.table("file_precipitacion.txt", sep = "\t", stringsAsFactors = FALSE)
fechas <- strptime(df_prec$fecha, format="%Y-%m-%d %H:%M")
df_prec$fecha <- as.POSIXct(fechas)  

df_temp = read.table("file_temperatura.txt", sep = "\t", stringsAsFactors = FALSE)
fechas <- strptime(df_temp$fecha, format="%Y-%m-%d %H:%M")
df_temp$fecha <- as.POSIXct(fechas)  

Otra manera de crear un vector de fechas específico, esta es la serie completa.

ts = seq(as.POSIXct("2010-01-01 00:00"), as.POSIXct("2015-01-01 00:00"),by = 300)  #1800 sec = 30 min
df_ts <- as.data.frame(ts)
colnames(df_ts) <- c("fecha")

Ahora vamos a unir la serie completa con el conjunto de datos de los archivos.

df_prec_comp <- merge(df_ts,df_prec, by="fecha",all.x = TRUE)
summary(df_prec_comp)
##      fecha                     precipitacion  
##  Min.   :2010-01-01 00:00:00   Min.   : 0.01  
##  1st Qu.:2011-04-02 12:00:00   1st Qu.:12.49  
##  Median :2012-07-02 00:00:00   Median :25.03  
##  Mean   :2012-07-02 00:00:00   Mean   :25.01  
##  3rd Qu.:2013-10-01 12:00:00   3rd Qu.:37.52  
##  Max.   :2015-01-01 00:00:00   Max.   :50.00  
##                                NA's   :15000
df_temp_comp <- merge(df_ts,df_temp, by="fecha",all.x = TRUE)
summary(df_temp_comp)
##      fecha                      temperatura    
##  Min.   :2010-01-01 00:00:00   Min.   :-3.000  
##  1st Qu.:2011-04-02 12:00:00   1st Qu.: 5.281  
##  Median :2012-07-02 00:00:00   Median :13.508  
##  Mean   :2012-07-02 00:00:00   Mean   :13.507  
##  3rd Qu.:2013-10-01 12:00:00   3rd Qu.:21.740  
##  Max.   :2015-01-01 00:00:00   Max.   :30.000  
##                                NA's   :20000

Cut

Z <- stats::rnorm(10000)
summary(Z)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -3.71500 -0.70650 -0.02686 -0.01444  0.66620  3.50800
z <- cut(Z, breaks = -6:6)
head(z)
## [1] (-1,0]  (1,2]   (1,2]   (0,1]   (-2,-1] (-1,0] 
## 12 Levels: (-6,-5] (-5,-4] (-4,-3] (-3,-2] (-2,-1] (-1,0] (0,1] ... (5,6]
z <- cut(Z, breaks = -6:6, labels = FALSE)
head(z)
## [1] 6 8 8 7 5 6
zz <- table(z)
zz
## z
##    3    4    5    6    7    8    9   10 
##   13  214 1424 3463 3296 1336  242   12
dtm=as.POSIXct("2007-03-27 05:00", tz="GMT")+60*(1:240) #60 segundos
Count<-c(1:240)
DF<-data.frame(dtm,Count)

DF$min15<-cut(DF$dtm,breaks="15 min")

Min15_Avg<-aggregate(Count~min15,DF,sum)

ggplot2

library(ggplot2)
ggplot(df_events_results, aes(x = log(duration), y = log(rain_acc), color=factor(year))) + geom_point() + facet_wrap(~month)

ggplot(df_events_results, aes(x = log(duration), y = log(rain_acc), color=factor(year))) + geom_point() + facet_wrap(~manualClass)

ggplot(df_events_results, aes(x = factor(year), y = log(duration), color=factor(year))) + geom_boxplot() + facet_wrap(~manualClass)