2013-06-19 60 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) 

還有許多其他方法可以對任何基本摘要函數和/或包執行此操作。