I am very new to R, so I apologize for such a basic question. I spent an hour googling this issue, but couldn't find a solution.
Say I have some categorical data in my data set about common pet types. I input it as a character vector in R that contains the names of different types of animals. I created it like this:
animals <- c("cat", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "cat", "cat", "bird")
I turn it into a factor for use with other vectors in my data frame:
animalFactor <- as.factor(animals)
I now want to create a histogram that shows the frequency of each variable on the y-axis, the name of each factor on the x-axis, and contains one bar for each factor. I attempt this code:
hist(table(animalFactor), freq=TRUE, xlab = levels(animalFactor), ylab = "Frequencies")
The output is absolutely nothing like I'd expect. Labeling problems aside, I can't seem to figure out how to create a simple frequency histogram by category.
A histogram can be used to show either continuous or categorical data in a bar graph.
use the table() function to find the distribution of categorical values.
It seems like you want barplot(prop.table(table(animals)))
:
However, this is not a histogram.
If you'd like to do this in ggplot
, an API change was made to geom_histogram()
that leads to an error: https://github.com/hadley/ggplot2/issues/1465
To get around this, use geom_bar()
:
animals <- c("cat", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "cat", "cat", "bird") library(ggplot2) # counts ggplot(data.frame(animals), aes(x=animals)) + geom_bar()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With