0

我正在尝试根据辅助数据计数标准化数据条形图。
例如,从data.frame数据中的下表开始:

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

生成的条形图将具有 x 轴条“中性”、“低”、“中”和“高”,y 轴高度由分类计数除以分类中唯一 ID 的计数确定. IE:

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)

但是我不知道如何按照我的描述来规范化数据。

谢谢你的帮助!

4

2 回答 2

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
于 2013-06-19T22:17:31.770 回答
0

给定您的数据作为名为 DF 的数据框,

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

对于任何基本的汇总函数和/或包,还有许多其他方法可以做到这一点。

于 2013-06-20T14:54:53.227 回答