Compter la fréquence d’une variable par colonne dans R Dataframe

Une trame de données peut contenir des valeurs répétées ou manquantes. Chaque colonne peut contenir n’importe quel nombre d’instances dupliquées ou répétées de la même variable. Les statistiques et l’analyse des données reposent principalement sur la tâche de calculer la fréquence ou le nombre d’instances qu’une variable particulière contient dans chaque colonne. Dans cet article, nous allons voir comment trouver la fréquence d’une variable par colonne dans Dataframe en langage de programmation R.

Méthode 1 : Utilisation du package plyr

Le package plyr est utilisé de préférence pour expérimenter les données, c’est-à-dire créer, modifier et supprimer les colonnes du bloc de données, en les soumettant à de multiples conditions et fonctions définies par l’utilisateur. Il peut être téléchargé et chargé dans l’espace de travail à l’aide de la commande suivante :

install.packages("lpyr")

La méthode ldply() de ce package est utilisée pour appliquer une fonction prédéfinie sur chaque élément d’une liste, puis combiner les résultats dans une trame de données. Cette méthode peut être utilisée pour calculer la fréquence de la variable appartenant à la classe de type entier, caractère ou facteur.

Syntaxe: ldply(data, fun = NULL)

Arguments :

data – Les données sur lesquelles appliquer

fun – La fonction à appliquer

Dans cette méthode, la fonction sum() est appliquée en tant que fonction sur les éléments de chaque colonne appartenant au bloc de données. La fonction résulte en la somme du nombre de fois qu’une valeur spécifiée particulière se produit dans la colonne. La fonction est appliquée individuellement sur chaque colonne. La sortie renvoyée se présente sous la forme d’un bloc de données où la première colonne donne les noms de colonne attribués au bloc de données et la deuxième colonne affiche le nombre total d’occurrences de la variable spécifiée dans cette colonne.

Code:

R

library ('plyr')

set.seed(1)  

data_table <- data.frame(col1 =  sample(letters[1:3], 8, 

                                        replace = TRUE) ,

                         col2 = sample(letters[1:3], 8,

                                       replace = TRUE),

                         col3 = sample(letters[1:3], 8,

                                       replace = TRUE),

                         col4 = sample(letters[1:3], 8, 

                                       replace = TRUE))

 

print ("Original DataFrame")

print (data_table)

print ("Count of value per column")

 

ldply(data_table, function(c) sum(c =="a"))

Production:

[1] "Original DataFrame" 
  col1 col2 col3 col4 
1    a    b    b    a 
2    c    c    b    b 
3    a    c    c    a 
4    b    a    a    a 
5    a    a    c    b 
6    c    a    a    b 
7    c    b    a    b 
8    b    b    a    a    
[1] "Count of value per column"
   .id V1 
1 col1  3 
2 col2  3 
3 col3  4 
4 col4  4

La méthode peut également être utilisée pour calculer la fréquence d’un vecteur de valeurs. La fonction est définie de telle sorte qu’elle valide l’occurrence d’un élément à l’intérieur d’un vecteur à l’aide de l’opérateur %in%. La somme des occurrences TRUE dans chaque colonne est ensuite renvoyée en tant que décompte.

val %en% vec

Code:

R

library ('plyr')

 

set.seed(1)  

 

data_table <- data.frame(col1 =  sample(letters[1:3], 8, 

                                        replace = TRUE) ,

                         col2 = sample(letters[1:3], 8,

                                       replace = TRUE),

                         col3 = sample(letters[1:3], 8,

                                       replace = TRUE),

                         col4 = sample(letters[1:3], 8, 

                                       replace = TRUE))

 

print ("Original DataFrame")

print (data_table)

print ("Count of value per column")

ldply(data_table, function(c) sum(c %in% vec))

Production:

[1] "Original DataFrame"
  col1 col2 col3 col4
1    a    b    b    a
2    c    c    b    b
3    a    c    c    a
4    b    a    a    a
5    a    a    c    b
6    c    a    a    b
7    c    b    a    b
8    b    b    a    a    
[1] "Count of value per column"
   .id V1
1 col1  5
2 col2  6
3 col3  6
4 col4  8

Méthode 2 : Utilisation méthode sapply()

La méthode sapply(), qui est utilisée pour calculer la fréquence des occurrences d’une variable dans chaque colonne du bloc de données. La méthode sapply() est utilisée pour appliquer des fonctions sur des vecteurs ou des listes, et renvoyer des sorties basées sur ces calculs.

sapply (df , FUN)

Dans ce cas, le FUN est une fonction définie par l’utilisateur qui a initialement calculé le nombre de niveaux dans les cellules entières de la trame de données. Cela se fait par l’application de la désinscrire() méthodes utilisées pour convertir un bloc de données en une liste imbriquée. Ceci est suivi par l’application de unique() qui extrait uniquement les valeurs variables uniques contenues dans la trame de données.

unique (list)

Le vecteur obtenu en sortie de la méthode unique() est explicitement converti en un objet de type facteur par la méthode factor(), où les niveaux sont les valeurs uniques rencontrées. Tous les composants sont ainsi mappés à des niveaux à l’intérieur de ce vecteur.

factor (vec)

Au final, la méthode table() est alors appliquée. La méthode table () prend les facteurs de classification croisée appartenant à un vecteur pour créer un tableau de contingence des décomptes à chaque combinaison de niveaux de facteurs. Un tableau de contingence est essentiellement une tabulation des nombres et/ou des pourcentages pour plusieurs variables. Elle exclut le comptage de toute valeur manquante de la variable factorielle fournie à la méthode. La sortie renvoyée se présente sous la forme d’un tableau. Cette méthode peut être utilisée pour des tableaux croisés et des analyses statistiques.

table (fac-vec, .. )

La sortie est un bloc de données avec des en-têtes de ligne comme valeurs uniques du bloc de données et les en-têtes de colonne comme noms de colonne du bloc de données d’origine, où chaque valeur de cellule indique le nombre d’occurrences de cette variable d’en-tête de ligne dans la colonne respective.

Code:

R

set.seed(1)  

 

data_table <- data.frame(col1 =  sample(letters[1:3], 8,

                                        replace = TRUE) ,

                         col2 = sample(letters[1:3], 8,

                                       replace = TRUE),

                         col3 = sample(letters[1:3], 8,

                                       replace = TRUE),

                         col4 = sample(letters[1:3], 8,

                                       replace = TRUE))

 

print ("Original DataFrame")

print (data_table)

 

lvls <- unique(unlist(data_table))

 

freq <- sapply(data_table, 

               function(x) table(factor(x, levels = lvls, 

                                        ordered = TRUE)))

print ("Count of variables per column")

print (freq)

Production:

[1] "Original DataFrame"
  col1 col2 col3 col4
1    a    b    b    a
2    c    c    b    b
3    a    c    c    a
4    b    a    a    a
5    a    a    c    b
6    c    a    a    b
7    c    b    a    b
8    b    b    a    a 
[1] "Count of variables per column" 
  col1 col2 col3 col4 
a    3    3    4    4 
c    3    2    2    0 
b    2    3    2    4

Laisser un commentaire

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

Aller en haut