Come applicare una funzione a ciascuna riga utilizzando dplyr
È possibile utilizzare la seguente sintassi di base per applicare una funzione a ciascuna riga di un frame di dati in R utilizzando le funzioni dplyr:
df %>% rowwise() %>% mutate(mean_value = mean(c(col1, col2, col3), na. rm = TRUE ))
Questo particolare esempio calcola il valore medio di col1 , col2 e col3 per ogni riga nel frame di dati, ma puoi sostituire la funzione Mean() con qualsiasi funzione per la quale desideri calcolare una metrica diversa.
I seguenti esempi mostrano come utilizzare in pratica questa sintassi con il seguente frame di dati che contiene informazioni sui punti segnati da diversi giocatori di basket in diverse partite:
#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
Esempio 1: media di colonne specifiche in ciascuna riga
Il codice seguente mostra come calcolare il valore medio delle colonne game1 e game3 per ogni riga nel frame di dati:
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
Dal risultato possiamo vedere:
- Il valore medio di game1 e game3 nella prima riga è 22 .
- Il valore medio di game1 e game3 nella seconda riga è 20 .
- Il valore medio di game1 e game3 nella terza riga è 22 .
E così via.
Esempio 2: numero massimo di colonne specifiche in ogni riga
Il codice seguente mostra come calcolare il valore massimo delle colonne game2 e game3 per ogni riga nel frame di dati:
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
Dal risultato possiamo vedere:
- Il valore massimo di game2 e game3 nella prima riga è 12 .
- Il valore massimo di game2 e game3 nella seconda riga è 15 .
- Il valore massimo di game2 e game3 nella terza riga è 15 .
E così via.
Esempio 3: deviazione standard di colonne specifiche in ciascuna riga
Il codice seguente mostra come calcolare la deviazione standard dei valori nelle colonne game2 e game3 per ogni riga nel data frame:
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
Dal risultato possiamo vedere:
- La deviazione standard di gioco2 e gioco3 nella prima riga è NA (poiché la deviazione standard non può essere calcolata da un singolo valore).
- La deviazione standard di game2 e game3 nella seconda riga è 3,54 .
- La deviazione standard di game2 e game3 nella prima riga 6.36 .
E così via.
Nota : puoi trovare la documentazione completa della funzione rowwise() in dplyr qui .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni utilizzando dplyr:
Come contare valori distinti usando dplyr
Come sommare su più colonne utilizzando dplyr
Come sostituire più valori in un frame di dati utilizzando dplyr