Hoe u een functie op elke rij kunt toepassen met behulp van dplyr


U kunt de volgende basissyntaxis gebruiken om een functie toe te passen op elke rij van een dataframe in R met behulp van dplyr-functies:

 df %>%
  rowwise() %>% 
  mutate(mean_value = mean(c(col1, col2, col3), na. rm = TRUE ))

Dit specifieke voorbeeld berekent de gemiddelde waarde van col1 , col2 en col3 voor elke rij in het gegevensframe, maar u kunt de functie Mean() vervangen door elke functie waarvoor u een andere metriek wilt berekenen.

De volgende voorbeelden laten zien hoe u deze syntaxis in de praktijk kunt gebruiken met het volgende dataframe dat informatie bevat over de punten die door verschillende basketbalspelers in verschillende games zijn gescoord:

 #create data frame
df <- data. frame (game1=c(22, 25, 29, 13, 22, 30),
                 game2=c(12, 10, 6, 6, 8, 11),
                 game3=c(NA, 15, 15, 18, 22, 13))

#view data frame
df

  game1 game2 game3
1 22 12 NA
2 25 10 15
3 29 6 15
4 13 6 18
5 22 8 22
6 30 11 13

Voorbeeld 1: Gemiddelde van specifieke kolommen in elke rij

De volgende code laat zien hoe u de gemiddelde waarde van de kolommen game1 en game3 voor elke rij in het gegevensframe berekent:

 library (dplyr)

#calculate mean of game1 and game3
df %>%
  rowwise() %>% 
  mutate(mean_points = mean(c(game1, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 mean_points
           
1 22 12 NA 22  
2 25 10 15 20  
3 29 6 15 22  
4 13 6 18 15.5
5 22 8 22 22  
6 30 11 13 21.5

Uit het resultaat kunnen we zien:

  • De gemiddelde waarde van game1 en game3 in de eerste rij is 22 .
  • De gemiddelde waarde van game1 en game3 in de tweede rij is 20 .
  • De gemiddelde waarde van game1 en game3 in de derde rij is 22 .

Enzovoort.

Voorbeeld 2: Maximaal aantal specifieke kolommen in elke rij

De volgende code laat zien hoe u de maximale waarde van de game2- en game3- kolommen voor elke rij in het dataframe berekent:

 library (dplyr)

#calculate max of game2 and game3
df %>%
  rowwise() %>% 
  mutate(max_points = max(c(game2, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 max_points
          
1 22 12 NA 12
2 25 10 15 15
3 29 6 15 15
4 13 6 18 18
5 22 8 22 22
6 30 11 13 13

Uit het resultaat kunnen we zien:

  • De maximale waarde van game2 en game3 in de eerste rij is 12 .
  • De maximale waarde van game2 en game3 in de tweede rij is 15 .
  • De maximale waarde van game2 en game3 in de derde rij is 15 .

Enzovoort.

Voorbeeld 3: Standaardafwijking van specifieke kolommen in elke rij

De volgende code laat zien hoe u de standaardafwijking van de waarden in de game2- en game3- kolommen voor elke rij in het dataframe kunt berekenen:

 library (dplyr)

#calculate standard deviation of game2 and game3
df %>%
  rowwise() %>% 
  mutate(sd_points = sd(c(game2, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 sd_points
         
1 22 12 NA NA   
2 25 10 15 3.54
3 29 6 15 6.36
4 13 6 18 8.49
5 22 8 22 9.90
6 30 11 13 1.41

Uit het resultaat kunnen we zien:

  • De standaardafwijking van game2 en game3 in de eerste rij is NA (aangezien de standaardafwijking niet uit één enkele waarde kan worden berekend).
  • De standaardafwijking van game2 en game3 in de tweede rij is 3,54 .
  • De standaardafwijking van game2 en game3 in de eerste rij 6,36 .

Enzovoort.

Opmerking : u kunt de volledige documentatie van de functie rowwise() in dplyr hier vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken kunt uitvoeren met dplyr:

Hoe u verschillende waarden kunt tellen met dplyr
Hoe u meerdere kolommen kunt optellen met dplyr
Hoe u meerdere waarden in een dataframe kunt vervangen met dplyr

Einen Kommentar hinzufügen

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