2016-05-30 132 views
1

假设我有一个数据集如下,R:如何从多列频率数据创建条形图?

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 

我想表明,有 2学生Class_1,在Class_2 2学生和 2学生Class_3使用ggplot一个条形图( )

我很感激你的时间。谢谢。

+0

'dput'您的数据集将是有益的。 – 989

回答

1
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() 

plot plot

+0

我的道歉!我的问题是错误的。你想再看一遍更新的问题吗? –

+0

非常感谢。它解决了我的问题。 ggplot(d [!duplicated(d),],aes(x = Class,fill = ID))+ geom_bar() 这个工作正常。然而,当我在新数据集中有两列时,它就起作用了。我想,复印机对于两个以上的栏目给出了不同的结果。 –

+0

如果还有其他列,ggplot(d [!duplicated(d [,c(1,2)]),],aes(x = Class,fill = ID))+ geom_bar()。您可以决定duplicateated()的关键列。 – cuttlefish44

0

假设你上面提供的数据是在一个名为dat数据帧:

library(ggplot2) 

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

应该工作。 geom_bar的默认值是获取频率。

+0

嗨大卫,我在我原来的帖子中犯了一个错误,我的道歉。现在,我已经纠正它,每个班级的学生应该是独特的学生。希望现在很清楚? –