A: hoe u aggregate() gebruikt en rijen met na niet verwijdert


U kunt de functie Aggregate() in R gebruiken om samenvattende statistieken voor variabelen in een dataframe te berekenen.

Als de functie Aggregate() een rij in een dataframe tegenkomt met een of meer NA-waarden, wordt standaard de rij eenvoudigweg verwijderd bij het uitvoeren van berekeningen.

Dit kan tot onverwachte gevolgen leiden bij het uitvoeren van berekeningen.

Om dit gedrag te voorkomen, kunt u het argument na.action=NULL gebruiken in de functie Aggregate() .

Het volgende voorbeeld laat zien hoe u dit argument in de praktijk kunt gebruiken.

Voorbeeld: Gebruik aggate() in R en verwijder geen regels met NA

Stel dat we het volgende dataframe in R hebben dat de punten en assists van basketbalspelers van verschillende teams toont:

 #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

Stel nu dat we de functie Aggregate() proberen te gebruiken om de som van punten en assists te berekenen, gegroepeerd per team :

 #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

Het resultaat lijkt ons de som van de punten en assists per team te tonen, maar bij het uitvoeren van deze berekeningen zijn de rijen met NA-waarden feitelijk verwijderd.

We kunnen dit bevestigen door naar het originele dataframe te kijken en te zien dat Team C twee waarden in de puntenkolom heeft:

  • 15
  • 18

Team C zou dus in totaal 33 punten moeten hebben, maar het resultaat toont slechts 15.

Dit komt omdat de rij met een puntenwaarde van 18 de waarde NA heeft in de kolom assists , wat betekent dat deze rij feitelijk niet werd gebruikt bij het berekenen van de puntensom van het team ten opzichte van de assists-kolom.

Om ervoor te zorgen dat rijen met NA-waarden niet worden verwijderd bij het uitvoeren van berekeningen, moeten we het argument na.action=NULL als volgt gebruiken:

 #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

Merk op dat de functie Aggregate() deze keer correct een som van puntwaarden voor team C retourneert die gelijk is aan 33.

Opmerking : het argument na.rm=TRUE geeft aan dat NA-waarden moeten worden genegeerd bij het uitvoeren van een berekening in een specifieke kolom.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:

Hoe de summary()-functie in R te gebruiken
Hoe het gemiddelde per groep in R te berekenen
Hoe beschrijvende statistieken in R te berekenen

Einen Kommentar hinzufügen

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