J'ai un facteur avec de nombreuses valeurs différentes. Si vous exécutez summary(factor)
la sortie est une liste des différentes valeurs et leur fréquence. Ainsi:
A B C D
3 3 1 5
Je voudrais faire un histogramme des valeurs de fréquence, c'est-à-dire que l'axe X contient les différentes fréquences qui se produisent, l'axe Y le nombre de facteurs qui ont cette fréquence particulière. Quelle est la meilleure façon d'accomplir quelque chose comme ça?
edit: grâce à la réponse ci-dessous, j'ai compris que ce que je pouvais faire était de retirer le facteur des fréquences du tableau, de le mettre dans un tableau puis de le représenter graphiquement, ce qui ressemblerait à (si f
est le facteur):
plot(factor(table(f)))
Mise à jour à la lumière de Q clarifié
set.seed(1)
dat2 <- data.frame(fac = factor(sample(LETTERS, 100, replace = TRUE)))
hist(table(dat2), xlab = "Frequency of Level Occurrence", main = "")
donne:
Ici, nous appliquons simplement hist()
directement au résultat de table(dat)
. table(dat)
fournit les fréquences par niveau du facteur et hist()
produit l'histogramme de ces données.
Original
Il existe plusieurs possibilités. Vos données:
dat <- data.frame(fac = rep(LETTERS[1:4], times = c(3,3,1,5)))
En voici trois, de la première colonne, de haut en bas:
"table"
, Tracent les données et les barres de type histogrammeCode pour les produire:
layout(matrix(1:4, ncol = 2))
plot(table(dat), main = "plot method for class \"table\"")
barplot(table(dat), main = "barplot")
tab <- as.numeric(table(dat))
names(tab) <- names(table(dat))
dotchart(tab, main = "dotchart or dotplot")
## or just this
## dotchart(table(dat))
## and ignore the warning
layout(1)
cela produit:
Si vous avez juste vos données dans la variable factor
(choix de mauvais nom d'ailleurs) alors table(factor)
peut être utilisé plutôt que table(dat)
ou table(dat$fac)
dans mes exemples de code.
Pour être complet, le package lattice
est plus flexible quand il s'agit de produire le tracé de points car nous pouvons obtenir l'orientation souhaitée:
require(lattice)
with(dat, dotplot(fac, horizontal = FALSE))
donnant:
Et une version ggplot2
:
require(ggplot2)
p <- ggplot(data.frame(Freq = tab, fac = names(tab)), aes(fac, Freq)) +
geom_point()
p
donnant: