A: wie man aggregate() verwendet und keine zeilen mit na löscht


Sie können die Funktion Aggregate() in R verwenden, um zusammenfassende Statistiken für Variablen in einem Datenrahmen zu berechnen.

Wenn die Aggregate()- Funktion standardmäßig auf eine Zeile in einem Datenrahmen mit einem oder mehreren NA-Werten trifft, wird die Zeile bei der Durchführung von Berechnungen einfach entfernt.

Dies kann zu unerwarteten Konsequenzen bei der Durchführung von Berechnungen führen.

Um dieses Verhalten zu vermeiden, können Sie das Argument na.action=NULL in der Funktion Aggregate() verwenden.

Das folgende Beispiel zeigt, wie dieses Argument in der Praxis verwendet wird.

Beispiel: Verwenden Sie aggegate() in R und löschen Sie keine Zeilen mit NA

Angenommen, wir haben den folgenden Datenrahmen in R, der die Punkte und Assists von Basketballspielern verschiedener Teams zeigt:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'),
                 points=c(5, 9, 12, 14, 14, 13, 10, 6, 15, 18),
                 assists=c(NA, 4, 4, 5, 3, 6, 8, 4, 10, NA))

#view data frame
df

   team points assists
1 to 5 NA
2 to 9 4
3 to 12 4
4 to 14 5
5 A 14 3
6 B 13 6
7 B 10 8
8 B 6 4
9 C 15 10
10 C 18 NA

Nehmen wir nun an, wir versuchen, mit der Funktion Aggregate() die Summe der Punkte und Assists , gruppiert nach Team , zu berechnen:

 #attempt to calculate sum of points and assists, grouped by team
aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE )

  team points assists
1 A 49 16
2 B 29 18
3 C 15 10

Das Ergebnis scheint uns die Summe der Punkte und Assists pro Team zu zeigen, aber die Zeilen mit NA-Werten wurden bei der Durchführung dieser Berechnungen tatsächlich entfernt.

Wir können dies bestätigen, indem wir uns den ursprünglichen Datenrahmen ansehen und feststellen, dass Team C zwei Werte in der Punktespalte hat:

  • 15
  • 18

Team C sollte also insgesamt 33 Punkte haben, aber das Ergebnis zeigt nur 15.

Dies liegt daran, dass die Zeile mit einem Punktewert von 18 in der Assists- Spalte einen Wert von NA hat, was bedeutet, dass diese Zeile bei der Berechnung der Punktesumme des Teams im Vergleich zu den Werten tatsächlich nicht verwendet wurde.

Um sicherzustellen, dass Zeilen mit NA-Werten bei der Durchführung von Berechnungen nicht entfernt werden, müssen wir das Argument na.action=NULL wie folgt verwenden:

 #calculate sum of points and assists, grouped by team (don't drop NA rows)
aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE , na. action =NULL)

  team points assists
1 A 54 16
2 B 29 18
3 C 33 10

Beachten Sie, dass die Funktion Aggregate() dieses Mal korrekt eine Summe der Punktwerte für Team C von 33 zurückgibt.

Hinweis : Das Argument na.rm=TRUE gibt an, dass NA-Werte ignoriert werden sollen, wenn eine Berechnung in einer bestimmten Spalte durchgeführt wird.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in R ausführen:

So verwenden Sie die Funktion summary() in R
So berechnen Sie den Mittelwert pro Gruppe in R
So berechnen Sie deskriptive Statistiken in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert