我有一个带有二进制编码的子类别A-I的数据集。如果Number为1,则发生给定子类别中的事件。任何组合均有效。此外,“ MyCases”列中有三种不同的情况。看起来像这样:
> dataset
MyCases I H G F E D C B A
1 Case One 0 0 0 1 0 0 1 0 1
2 Case Three 0 0 0 1 0 0 1 0 1
3 Case Two 0 0 0 1 0 0 0 0 0
4 Case Two 0 0 0 1 1 1 1 0 1
5 Case Two 0 0 0 1 0 0 0 0 1
6 Case Three 0 0 0 0 0 0 0 0 1
7 Case One 0 0 0 0 0 0 0 0 1
8 Case Two 0 0 0 1 0 1 0 0 1
9 Case Two 0 0 0 0 0 0 0 0 0
10 Case One 0 0 0 1 0 1 1 0 1
[...]
我能够按绝对数字with the help of this thread制作条形图。这是代码:
dataset %>%
gather(key, value, -MyCases) %>%
ggplot(., (aes(MyCases, as.numeric(value), fill = key))) +
labs(
title = "Chart of absolute numbers",
x = "The three different cases", y = "absolute number of occurences"
) +
stat_summary(fun.y = sum, geom = "bar", position = "dodge")
您可以看到结果图表here.
但是,为了能够比较这三种不同的情况,我想使标杆具有关联性。我想计算“ MyCases”中每种不同情况的相对数字。
我的问题是:
答案 0 :(得分:1)
在将数据传递到ggplot
之前,您可以对它们进行分组和汇总,以找到每种情况下每个类别内发生的事件的比例。
# data are already gathered
df <- data.frame(case=sample(1:3,500,T),
event.type=sample(letters[1:5],500,T),
event.value=sample(c(0,1),500,T))
df %>% group_by(case,event.type) %>%
summarise(n=sum(event.value)) %>%
mutate(prop=n/sum(n)) %>%
ggplot(aes(case,prop,fill=event.type)) + geom_bar(stat='identity',position='dodge')