Jakob Richter

aggregate() – Teil 2

Teil 1 findet sich hier: aggregate() – der Anfang

Der erste Teil lieferte ein einfaches Beispiel zur Nutzung der aggregate()-Funktion. Widmen wir uns nun einem etwas komplexeren Fall.

Verschiedene Gruppen erzeugen

Zunächst simulieren wir uns wieder einmal ein Datensatz mit ein paar Versuchsperson und ihrem Gewicht vor der Studie (gewicht1) und ihrem Gewicht nach der Studie (gewicht2). Außerdem brauchen wir natürlich noch Gruppen, die wir untersuchen wollen. Weisen wir den Versuchspersonen also noch zufällig eine Haarfarbe und die Therapie (1 Wöchige Diät aus ausschließlich Salat oder Pizza) zu.

1
2
3
4
5
6
7
8
set.seed(110)
gewicht1 <- rnorm(100,mean=90,sd=15) #Gewichte der Versuchspersonen vor dem Essen
gewicht2 <- rnorm(100,mean=100,sd=20) #Gewichte nach dem Essen
gewichte <- cbind.data.frame(gewicht1,gewicht2) #Datensatz mit beiden Gewichten
gewichte <- cbind(gewichte,zunahme=gewichte$gewicht2 - gewichte$gewicht1)    #die Zunahme hinzufügen
haarfarben <- sample(c("blond","rot","brünett","schwarz"),size=100,rep=T)
essen <- sample(c("Salat","Pizza"),size=100,rep=T)
einteilung <- list(haarfarbe=haarfarben,essen=essen)

In den letzten Zeilen haben wir also einen Vektor erzeugt mit 100 Zuteilungen für die Haarfarbe und 100 Zuteilungen für das Essen, was die Versuchspersonen verabreicht bekommen.

Was wird aggregate() jetzt tun?

Ganz einfach: Für alle Werte des Eingabevektors, die die gleiche Kombination von haarfarbe und essen haben wird die Funktion FUN= aufgerufen. Wenn die Funktion z.B. mean ist, wird das arithmetische Mittel von jeweils gewicht1, gewicht2 und zunahme gebildet von den Personen, die die gleiche Haarfarbe und die gleiche Diät hatten.
Read the rest of this entry »