2013-06-19 34 views
0

我试图根据二次数据计数规范一个数据条形图。
例如,在data.frame数据开始下表:R/ggplot2:标准化二次数据计数条形图

ID Classification 
1 neutral 
1 low 
2 medium 
2 high 
2 high 
3 neutral 
3 neutral 
4 medium 
4 low 
5 medium 

所得barplot将具有x轴杆“中性”,“低”,“中”,和“高”,与y轴高度由分类计数除以分类中唯一ID的计数确定。即:

neutral = 3/2 
low = 2/2 
medium = 3/3 
high = 2/1 

我知道,这样做只是计数以下工作:

levels(data$Classification) <- c("neutral", "low", "medium", "high") 
qplot(Classification, fill = Classification, data = data, geom = "bar") + guides(fill = FALSE) 

但我不知所措试图找出如何为我所描述的标准化数据。

感谢您的帮助!

+0

“正常化”是什么意思? – dickoa

+0

通过“正常化”,你的意思是你想要得到一个概率分布吗? –

+0

你应该将它称为“正常化”以外的东西,因为它不会执行通常称为“正常化”的两种操作之一。 –

回答

0

如果“正常化”你的意思是得到一个概率分布:

netural 
low 
medium 
high 

然后,对于每个属性,你把它的值和所有的值(一个为每个属性的总和除以它)。根据你的榜样,中性将成为:

neutral = neutral/(neutral + low + medium + high) 
        or 
neutral = 3/2/(3/2 + 2/2 + 3/3 + 2/1) 

就像我说的,你会在其他三个标签做到这一点,也给你APPX:

neutral = .273 
low = .182 
medium = .182 
high = .363 
0

鉴于你的数据作为名为DF的数据帧,

library(plyr) 
u <- ddply(DF, "Classification", summarise, n = length(unique(ID)), frq = length(ID)) 
mutate(u, ratio = frq/n) 

还有许多其他方法可以对任何基本摘要函数和/或包执行此操作。