Podobnie jak funkcje zastosuj, funkcja aggregte() wyszukuje statystyki dla grup danych. Funkcje table(), tabulate() i ftable() tworzą na podstawie danych tabele awaryjne.
Funkcja aggregate()
Funkcja aggregate() stosuje funkcję do elementów obiektu na podstawie wartości innego obiektu. Obiekt, na którym ma być wykonywana operacja, jest szeregiem czasowym, ramką danych lub obiektem, który można przekształcić w ramkę danych. Wartości drugiego obiektu muszą być listą zawierającą elementy, które można zinterpretować jako czynniki, a na drugim poziomie musi mieć długość równą wierszom ramki danych lub szeregu czasowego. Funkcja inaczej traktuje ramki danych i szeregi czasowe.
Ramki danych
W przypadku ramek danych argumentami są x, by, FUN,. . . i uprościć. Argument x jest ramką danych. Argument by jest obiektem listy trybów składającej się z elementów, które mogą być interpretowane jako czynniki. Elementy by służą do grupowania wierszy x. Argument FUN to funkcja, która ma zostać zastosowana, a. . . są dodatkowymi argumentami dla tej funkcji. Argument simplify mówi agregatowi (), czy próbować uprościć wynik do wektora czy macierzy. Wartość domyślna to TRUE. Wynikiem agregacji () dla ramki danych jest ramka danych. Oto przykład:
> x2=rep(1:2,3)
> x1=rep(1:2,3)
> y1=1:6
> y2=7:12
> a.df=data.frame(y1,y2,x1,x2)
> a.df
y1 y2 x1 x2
1 1 7 1 1
2 2 8 2 2
3 3 9 1 1
4 4 10 2 2
5 5 11 1 1
6 6 12 2 2> aggregate(a.df[,1:2], list(x1,x2), mean)
Group.1 Group.2 y1 y2
1 1 1 3 9
2 2 2 4 10
W przypadku ramek danych można użyć formuły do sklasyfikowania x zamiast używania argumentu by. W przypadku opcji formuły argumentami są formuła, dane, FUN,. . ., podzbiór i na. akcja. Formuła argumentu ma postać y ~ x, gdzie y jest liczbą i może mieć więcej niż jedną kolumnę, a x jest formułą, taką jak x1 lub x1 + x2, gdzie zarówno x1, jak i x2 można interpretować jako czynniki. Argument data podaje nazwę ramki danych i musi zostać uwzględniony. Argument FUN to funkcja, która ma zostać zastosowana, a. . . zawiera dodatkowe argumenty dla ZABAWY. Podzbiór argumentów podaje wiersze ramki danych, na których należy operować. Argument na.action umożliwia wybór sposobu obsługi brakujących wartości i jest łańcuchem znaków. Wartością domyślną jest „na.omit”, co oznacza, że funkcja agregatu () ma pomijać brakujące wartości. Oto przykład:
> a.df
y1 y2 x1 x2
1 1 7 1 1
2 2 8 2 2
3 3 9 1 1
4 4 10 2 2
5 5 11 1 1
6 6 12 2 2
> aggregate(cbind(y1,y2)~x1+x2, data=a.df, sum, subset=1:3)
x1 x2 y1 y2
1 1 1 4 16
2 2 2 2 8
Zwróć uwagę, że zmienna by musi być listą, podczas gdy prawa strona formuły nie może być listą.
Szereg czasowy
Szeregi czasowe mają zarówno częstotliwość, jak i okres. W R częstotliwość jest odwrotnością okresu i odwrotnie. Na przykład rok może być okresem zainteresowania. Następnie miesiące mają częstotliwość 12, a podokresy 1/12. W przypadku szeregów czasowych argumentami są x, nfrequency, FUN, ndeltat, ts.eps i. . .. Argument x musi być szeregiem czasowym. Argument nfrequency to liczba podokresów dla każdego okresu po zadziałaniu FUN na szeregach czasowych. Wartość musi być równo podzielona na pierwotną częstotliwość szeregów czasowych. Argument domyślnie jest równy 1. (Oryginalna częstotliwość szeregów czasowych podzielona przez nfrequency daje liczbę elementów, które są zgrupowane razem – na których działa FUN). Argument FUN to funkcja, którą należy zastosować i. . . daje ZABAWIE dodatkowe argumenty. Argument. . . znajduje się na końcu listy argumentów. Funkcja FUN musi być poprawna dla wartości szeregów czasowych i jest domyślnie sumą.
Argument ndeltat informuje agregat () o długości podokresów dla danych wyjściowych i domyślnie jest równy 1. Iloczyn częstotliwości pierwotnego szeregu czasowego i ndeltat musi być liczbą całkowitą. Można ustawić nfrequency lub ndeltat. Drugi jest ustawiony na odwrotność jednego zestawu. Argument ts.eps podaje tolerancję dla zaakceptowania tego, że częstotliwość nfrequency dzieli się równomiernie na częstotliwość szeregu czasowego. Domyślnie nfrequency równa się getOption („ts.eps”), której wartość można znaleźć, wprowadzając opcje („ts.eps”) po znaku zachęty R. Wartość jest numeryczna i można ją ustawić ręcznie. Oto przykład:
> x1=c(1,2,1,2,1,2)
> x2=c(1,2,3,1,2,3)
> a.ts=ts(cbind(x1,x2), start=1, frequency=3)
> a.ts
Time Series:
Start = c(1, 1)
End = c(2, 3)
Frequency = 3
x1 x2
1.000000 1 1
1.333333 2 2
1.666667 1 3
2.000000 2 1
2.333333 1 2
2.666667 2 3
> aggregate(a.ts, FUN=sum)
Time Series:
Start = 1
End = 2
Frequency = 1
x1 x2
1 4 6
2 5 6
Zauważ, że w przykładzie nfrequency i ndeltat oba są równe jeden. Więcej informacji o aggregate() można znaleźć, wpisując ?aggregate w wierszu polecenia R.