1) ts. Ponieważ jest to seria regularnych odstępach czasu, przekonwertować go do serii ts
a następnie zsumować je z częstotliwością 24 do częstotliwości 1:
> aggregate(ts(x2[, 2], freq = 24), 1, mean)
podając:
Time Series:
Start = 1
End = 4
Frequency = 1
[1] 108.5 132.5 156.5 180.5
2) zoo. Tutaj używa się zoo. Pakiet zoo może również obsługiwać nieregularne odstępy między seriami (jeśli potrzebujemy przedłużyć to). Poniżej day.hour
jest liczba dni (1, 2, 3, 4) oraz godzinę jako ułamek dnia, tak że floor(day.hour)
tylko liczba dni:
> 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
Jeśli zz
jest wyjście następnie coredata(zz)
i time(zz)
są odpowiednio wartościami i czasami, jak zwykłe wektory.
@SnowFrog Mylisz się. tapply nie tworzy ramki danych. Tworzy wektor (w tym przypadku). Duża różnica. –
Jednym z problemów związanych z metodą "tapply" jest to, że tworzy on wektor (liczba kolumn = liczba dni).Metoda "agregatowa" tworzy ramkę danych (1 kolumna z liczbą wierszy = liczba dni), co może być bardziej praktyczne, jeśli potrzebna jest późniejsza manipulacja danymi. – SnowFrog