Comment calculer la valeur médiane des lignes dans R
Vous pouvez utiliser les méthodes suivantes pour calculer la valeur médiane des lignes dans R :
Méthode 1 : calculer la médiane des lignes en utilisant la base R
df$row_median = apply(df, 1, median, na.rm=TRUE)
Méthode 2 : calculer la médiane des lignes à l’aide de dplyr
library(dplyr) df %>% rowwise() %>% mutate(row_median = median(c_across(where(is.numeric)), na.rm=TRUE))
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.
Exemple 1 : calculer la médiane des lignes en utilisant la base R
Supposons que nous ayons le bloc de données suivant dans R qui montre les points marqués par différents joueurs de basket-ball au cours de trois matchs différents :
#create data frame
df <- data.frame(game1=c(10, 12, 14, 15, 16, 18, 19),
game2=c(14, 19, 13, 8, 15, 15, 17),
game3=c(9, NA, 15, 25, 26, 30, 19))
#view data frame
df
game1 game2 game3
1 10 14 9
2 12 19 NA
3 14 13 15
4 15 8 25
5 16 15 26
6 18 15 30
7 19 17 19
Nous pouvons utiliser la fonction apply() de la base R pour créer une nouvelle colonne qui affiche la valeur médiane de chaque ligne :
#calculate median of each row
df$row_median = apply(df, 1, median, na.rm=TRUE)
#view updated data frame
df
game1 game2 game3 row_median
1 10 14 9 10.0
2 12 19 NA 15.5
3 14 13 15 14.0
4 15 8 25 15.0
5 16 15 26 16.0
6 18 15 30 18.0
7 19 17 19 19.0
La nouvelle colonne appelée row_median contient la valeur médiane de chaque ligne du bloc de données.
Exemple 2 : calculer la médiane des lignes à l’aide de dplyr
Supposons que nous ayons le bloc de données suivant dans R qui montre les points marqués par différents joueurs de basket-ball au cours de trois matchs différents :
#create data frame
df <- data.frame(player=c('A', 'B', 'C', 'D', 'E', 'F', 'G'),
game1=c(10, 12, 14, 15, 16, 18, 19),
game2=c(14, 19, 13, 8, 15, 15, 17),
game3=c(9, NA, 15, 25, 26, 30, 19))
#view data frame
df
player game1 game2 game3
1 A 10 14 9
2 B 12 19 NA
3 C 14 13 15
4 D 15 8 25
5 E 16 15 26
6 F 18 15 30
7 G 19 17 19
Nous pouvons utiliser la fonction mutate() du package dplyr pour créer une nouvelle colonne qui affiche la valeur médiane de chaque ligne pour les colonnes numériques uniquement :
library(dplyr)
#calculate median of rows for numeric columns only
df %>%
rowwise() %>%
mutate(row_median = median(c_across(where(is.numeric)), na.rm=TRUE))
# A tibble: 7 x 5
# Rowwise:
player game1 game2 game3 row_median
1 A 10 14 9 10
2 B 12 19 NA 15.5
3 C 14 13 15 14
4 D 15 8 25 15
5 E 16 15 26 16
6 F 18 15 30 18
7 G 19 17 19 19
La nouvelle colonne appelée row_median contient la valeur médiane de chaque ligne du bloc de données pour les colonnes numériques uniquement.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment remplacer NA par la médiane dans R
Comment calculer une moyenne tronquée dans R
Comment calculer une moyenne pondérée dans R