Comment calculer le mode de toutes les lignes ou colonnes d’une dataframe en R ?

Dans cet article, nous expliquerons comment calculer le mode de toutes les lignes et colonnes à partir d’une trame de données dans le langage de programmation R.

Méthode 1 : Utilisation du package DescTools

Le package DescTools dans R est utilisé pour effectuer une analyse descriptive. Il contient une collection de fonctions statistiques de base diverses et d’emballages pratiques pour décrire efficacement les données. Il peut être installé dans l’espace de travail R en utilisant la syntaxe suivante :

install.packages("DescTools")

La méthode mode() de ce package est utilisée pour renvoyer la valeur numérique ou de caractère la plus fréquente à partir du vecteur d’entrée.

Syntaxe: Mode(vec, na.rm = FAUX)

Arguments :

vec – un vecteur numérique (non vide) de valeurs.

na.rm (Défaut : false)- Indicateur indiquant si les valeurs manquantes doivent être supprimées.

Dans cette approche, une boucle for est lancée pour itérer sur toutes les colonnes, puis chaque colonne individuelle est fournie en tant que vecteur individuel dans la méthode Mode().

Code:

R

library ("DescTools")

 

data_frame = data.frame(col1 = c("b", "b", "d", "e", "e") , 

                        col2 = c(0, 2, 1, 2, 5), 

                        col3= c(TRUE, FALSE, FALSE,

                                TRUE, TRUE))

 

print ("Original dataframe")

print (data_frame)

print ("Mode of columns \n")

 

for (i in 1:ncol(data_frame)){

   

  

  mod_val <- Mode(data_frame[,i])

  cat(i, ": ",mod_val,"\n")

}

Production:

[1] "Original dataframe" 
col1 col2  col3 
1    b    0  TRUE 
2    b    2 FALSE 
3    d    1 FALSE 
4    e    2  TRUE 
5    e    5  TRUE 
[1] "Mode of columns"
1 :  1 3  
2 :  2  
3 :  TRUE 

Dans l’exemple précédent, l’équivalent numérique de col1 est renvoyé aux valeurs de mode. Cela entraîne une ambiguïté ou une perte de données. Afin de supprimer ce problème, la conversion explicite en as.character() peut être effectuée.

R

library ("DescTools")

 

data_frame = data.frame(col1 = c("b","b","d","e","e") , 

                        col2 = c(0,2,1,2,5), 

                        col3= c(TRUE,FALSE,FALSE,TRUE, TRUE))

 

print ("Original dataframe")

print (data_frame)

print ("Mode of columns \n")

 

for (i in 1:ncol(data_frame)){

   

  

  mod_val <- as.character(Mode(data_frame[,i]))

  cat(i, ": ",mod_val,"\n")

}

Production:

[1] "Original dataframe"
col1 col2  col3
1    b    0  TRUE
2    b    2 FALSE
3    d    1 FALSE
4    e    2  TRUE
5    e    5  TRUE
[1] "Mode of columns"
1 :  b e  
2 :  2  
3 :  TRUE 

Méthode 2 : méthode définie par l’utilisateur

Une itération de la boucle for est effectuée sur toutes les colonnes de la dataframe. Le mode peut être calculé à l’aide de la fonction définie par l’utilisateur en procédant comme suit :

Étape 1: Calculez les valeurs uniques du vecteur à l’aide de la méthode unique() dans R. Elle renvoie les valeurs uniques du vecteur.

Étape 2: La méthode match est appelée pour renvoyer un vecteur des positions des (premières) correspondances de son premier argument spécifié dans son deuxième argument. Le premier vecteur est le vecteur colonne d’origine et le second est le vecteur unique.

match (col , unique_vec)

Étape 3: La méthode tabulate() est ensuite invoquée, qui prend comme entrée le vecteur de valeur entière correspondant et compte le nombre d’occurrences de chaque entier dans le vecteur spécifié.

Étape 4: La valeur maximale de ces valeurs tabulées est ensuite calculée à l’aide de la méthode max(), qui est ensuite renvoyée comme mode de la colonne.

Code:

R

mode <- function(x) { 

   

  

  

  unq_data <- unique(x)

   

  

  map_data <- match(x, unq_data)

   

  

  tabulate_data <- tabulate(map_data)

   

  

  max_val <- max(tabulate_data)

   

  

  unq_data[tabulate_data == max_val]

}

 

data_frame = data.frame(col1 = c("b","b","d","e","e") , 

                        col2 = c(0,2,1,2,5), 

                        col3= c(TRUE,FALSE,FALSE,TRUE, TRUE))

print ("Original dataframe")

print (data_frame)

print ("Mode of columns \n")

 

for (i in 1:ncol(data_frame)){

   

  

  mod_val <- mode(data_frame[,i])

  print (mod_val)

}

Production:

[1] "Original dataframe"
col1 col2  col3
1    b    0  TRUE
2    b    2 FALSE
3    d    1 FALSE
4    e    2  TRUE
5    e    5  TRUE
[1] "Mode of columns"
[1] b e 
Levels: b d e 
[1] 2 
[1] TRUE

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Aller en haut