Il est important (essentiel même) d'établir des comptages en croisant des catégories et de convertir cela rapidement en proportions : table(), ftable() et prop.table() sont là pour cela !
data(iris) # Charge des données qui décrivent des iris
table(iris$Species) # Compte les iris de chaque espèce
setosa versicolor virginica
50 50 50
Remarque : on peut aussi faire des regroupement à l'échelle d'une variable avec ifelse()
ifelse (iris[,1]>5,"grand","petit") # Trier les valeurs entre grandes et petites.
On peut aussi imbriquer :
ifelse (iris[,1]>6,"grand",ifelse(iris[,1]<5,"petit","moyen"))
data(mtcars) # Charge des données qui décrivent des voitures
table(mtcars$cyl,mtcars$carb) # Compter les voitures en croisant cylindré et carburateurs
1 2 3 4 6 8
4 5 6 0 0 0 0
6 2 0 0 4 1 0
8 0 4 3 6 0 1
Cylindré vs Nombre de carbu
mosaicplot(table(mtcars$cyl,mtcars$carb) ,col=1:10, main=NULL, cex.axis=0.8)
table() permet de créer un contingent sur 1 ou plusieurs variables qualitatives.
ftable() permet de réorganiser les résultats de table()
Si j'étudie l'effet de plusieurs facteurs (variables qualitatives) sur une variable quantitatives, table() va me permettre de compter les individus dans chaque groupe croisé et de voir ainsi si les données sont équilibrées pour une ANOVA à 2 facteurs.
table(dt$facteur1, dt$$facteur2) #Croiser 2 facteurs
table(dt$facteur1, dt$$facteur2, , dt$$facteur3) #Croiser 3 facteurs (ou +)
Problème dans ce dernier cas, croiser plus de 2 facteurs produits un résultat illisible de table().
Utiliser ftable() permet de réorganiser les résultats dans un tableau agréable :
ftable(table(dt$facteur1, dt$$facteur2, , dt$$facteur3))
On peut aussi faire ftable() directement :
ftable(dt$facteur1, dt$$facteur2, , dt$$facteur3)
ftable(mtcars[,c(2,10,11)])
carb 1 2 3 4 6 8
cyl gear
4 3 1 0 0 0 0 0
4 4 4 0 0 0 0
5 0 2 0 0 0 0
6 3 2 0 0 0 0 0
4 0 0 0 4 0 0
5 0 0 0 0 1 0
8 3 0 4 3 5 0 0
4 0 0 0 0 0 0
5 0 0 0 1 0 1
Mise en proportions de l'ensemble du table (data.frame ou matrice) :
prop.table( ftable(mtcars[,c(2,10)]) )
gear 3 4 5
cyl
4 0.03125 0.25000 0.06250
6 0.06250 0.12500 0.03125
8 0.37500 0.00000 0.06250
Mise en proportions de l'ensemble du table (data.frame ou matrice) ligne par ligne :
prop.table( ftable(mtcars[,c(2,10)]) ,1)
gear 3 4 5
cyl
4 0.09090909 0.72727273 0.18181818
6 0.28571429 0.57142857 0.14285714
8 0.85714286 0.00000000 0.14285714
Mise en proportions de l'ensemble du table (data.frame ou matrice) colonne par colonne :
prop.table( ftable(mtcars[,c(2,10)]) ,2)
gear 3 4 5
cyl
4 0.06666667 0.66666667 0.40000000
6 0.13333333 0.33333333 0.20000000
8 0.80000000 0.00000000 0.40000000