R:如何从多列频率数据创建条形图?

R: How to create a barplot from a multi-column frequency data?

假设我有如下数据集,

ID     Class
a      Class_1
a      Class_1
b      Class_1
b      Class_1
b      Class_1

c      Class_2
c      Class_2
c      Class_2
d      Class_2
d      Class_2
d      Class_2

e      Class_3
f      Class_3

我要展示,有 Class_1 有 2 名学生, Class_2 和 2 名学生 barchart 中 Class_3 的 2 名学生使用 ggplot()

感谢您抽出时间。谢谢。

假设您在上面提供的数据位于名为 dat:

的数据框中
library(ggplot2)

ggplot(dat, aes(x = Class)) + geom_bar()

应该可以。 geom_bar 的默认值是获取频率。

d <- data.frame(ID = c(letters[c(1,1,2,2,2,3,3,3,4,4,4,5,6)]), 
            Class = c(rep("Class_1", 5), rep("Class_2", 6), "Class_3", "Class_3"))

如果要显示因子数的信息

p <- ggplot(d, aes (x = Class, fill = ID) ) + geom_bar(position="fill")
plot(p)    # check the number of breaks and use it as length
p + scale_y_continuous(label=seq(0, 2, length=5))
# Hoom, something strange ?

不需要

ggplot(d[! duplicated(d),], aes (x = Class, fill = ID) ) + geom_bar()