Trouver le mode d'un vecteur dans R
- Utiliser la fonction personnalisée pour trouver le mode d’un vecteur R
-
Utilisez
map_dbl
pour appliquer la fonctionFindMode
à chaque colonne de bloc de données dans R
Cet article expliquera plusieurs méthodes pour trouver un mode d’un vecteur dans R.
Utiliser la fonction personnalisée pour trouver le mode d’un vecteur R
Le mode est l’un des concepts statistiques les plus élémentaires indiquant la valeur d’occurrence maximale dans un ensemble de valeurs. En conséquence, il peut être observé dans différents types de données, tels que numériques ou basés sur des caractères. Le langage R n’a pas de fonction intégrée pour calculer le mode, mais nous pouvons l’implémenter en utilisant les fonctions : unique
, which.max
, tabulate
et match
. Nous définissons une fonction nommée FindMode
qui prend un argument noté x
. Dans un premier temps, la fonction unique
est appelée sur x
et stockée dans un objet séparé. unique
extrait les valeurs non dupliquées de l’ensemble. Il peut prendre un objet vectoriel, une DataFrame ou un tableau comme premier argument.
Ensuite, nous avons plusieurs fonctions chaînées commençant par match
qui prend deux vecteurs et renvoie un vecteur de correspondances de position à partir d’eux. La fonction tabulate
compte et renvoie le nombre de fois où chaque entier apparaît dans un vecteur. Notez que le vecteur renvoyé contient un nombre pour chaque entier inférieur ou égal à l’entier maximum dans le vecteur d’argument. Enfin, la fonction which.max
trouve l’indice de l’élément maximum dans le vecteur entier. Nous pouvons invoquer la fonction FindMode
sur chaque colonne du bloc de données en utilisant la fonction apply
. Dans ce cas, nous déclarons un simple vecteur entier stocké sous forme de DataFrame puis passé à la fonction apply
pour calculer la moyenne.
library(purrr)
FindMode <- function(x) {
u <- unique(x)
u[which.max(tabulate(match(x, u)))]
}
x <- c(12, 44, 3, -4.2, 3, 3.2, 54, 4, -11, -8, 2.5)
df <- data.frame(x)
apply(df, 2, FindMode)
Production:
x
3
Alternativement, nous pouvons appeler la fonction FindMode
directement sur la DataFrame. L’exemple de code suivant illustre l’utilisation avec le jeu de données cars
inclus dans le package datasets
.
library(purrr)
FindMode <- function(x) {
u <- unique(x)
u[which.max(tabulate(match(x, u)))]
}
apply(cars, 2, FindMode)
Production:
speed dist
20 26
Utilisez map_dbl
pour appliquer la fonction FindMode
à chaque colonne de bloc de données dans R
Une autre fonction utile pour trouver la moyenne pour chaque colonne de la DataFrame donnée est map_dbl
, qui fait partie du package purrr
inclus dans le tidyverse
. Notez que ces méthodes ne doivent pas être appelées sur les objets vectoriels.
library(purrr)
FindMode <- function(x) {
u <- unique(x)
u[which.max(tabulate(match(x, u)))]
}
x <- c(12, 44, 3, -4.2, 3, 3.2, 54, 4, -11, -8, 2.5)
df <- data.frame(x)
map_dbl(df, FindMode)
map_dbl(cars, FindMode)
Production:
x
3
speed dist
20 26
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook