1) ts. Trattandosi di una serie temporale intervalli regolari, convertirlo in una serie ts
e poi aggregare dalla frequenza 24 a frequenza 1:
> aggregate(ts(x2[, 2], freq = 24), 1, mean)
dando:
Time Series:
Start = 1
End = 4
Frequency = 1
[1] 108.5 132.5 156.5 180.5
2) zoo. Qui sta usando lo zoo. Il pacchetto zoo può anche gestire serie spaziate in modo irregolare (se avessimo bisogno di estenderlo). Sotto day.hour
è il numero del giorno (1, 2, 3, 4) più l'ora come una frazione del giorno in modo che floor(day.hour)
è solo il numero del giorno:
> library(zoo)
> day.hour <- seq(1, length = length(x2[, 2]), by = 1/24)
> z <- zoo(x2[, 2], day.hour)
> aggregate(z, floor, mean)
1 2 3 4
108.5 132.5 156.5 180.5
Se zz
è l'uscita poi coredata(zz)
e time(zz)
sono i valori e le volte, rispettivamente, come vettori ordinari.
fonte
2011-01-14 13:35:28
@SnowFrog Ti sbagli. tapply non crea un frame di dati. Crea un vettore (in questo caso). Grande differenza. –
Un problema con il metodo 'tapply' è che crea un vettore (numero di colonne = numero di giorni).Il metodo 'aggregate' crea un frame di dati (1 colonna con numero di righe = numero di giorni), che può essere più pratico se è necessaria una successiva manipolazione dei dati. – SnowFrog