Я ищу совет по лучшим способам построения пропорции наблюдений в различных категориях.ggplot графическое отображение пропорций наблюдений внутри категорий
У меня есть dataframe, который выглядит примерно так:
cat1 <- c("high", "low", "high", "high", "high", "low", "low", "low", "high", "low", "low")
cat2 <- c("1-young", "3-old", "2-middle-aged", "3-old", "2-middle-aged", "2-middle-aged", "1-young", "1-young", "3-old", "3-old", "1-young")
df <- as.data.frame(cbind(cat1, cat2))
В примере здесь, я хочу, чтобы построить пропорцию каждой возрастной группы, которые имеют значение «высокое», а доля каждой возрастной группы, которые имеют значение «низкий». В общем, я хочу построить, за каждое значение категории 2, процент наблюдений, попадающих в каждый из уровней категории 1.
Следующий код дает правильный результат, но только путем ручного подсчета и деление перед построением графика. Есть ли хороший способ сделать это на лету внутри ggplot?
library(plyr)
count1 <- count(df, vars=c("cat1", "cat2"))
count2 <- count(df, "cat2")
count1$totals <- count2$freq
count1$pct <- count1$freq/count1$totals
ggplot(data = count1, aes(x=cat2, y=pct))+
facet_wrap(~cat1)+
geom_bar()
This previous stackoverflow question предлагает что-то подобное, со следующим кодом:
ggplot(mydataf, aes(x = foo)) +
geom_bar(aes(y = (..count..)/sum(..count..)))
Но я не хочу «сумма (.. подсчет ..)» - которая дает сумму подсчета всех Ящики - в знаменателе; скорее, я хочу получить сумму подсчета каждой из категорий «cat2». Я также изучил документацию stat_bin.
Я был бы признателен за любые рекомендации и предложения по поводу того, как это сделать.
В дополнение к моему ответу, я также укажу вам на [это] (http://stackoverflow.com/a/10888762/324364) ответ, который может быть полезен. (Но имейте в виду, что такие взломы могут не сохраниться, поскольку ggplot будет обновляться до последующих версий.) – joran
Поскольку это не типичное резюме данных, в ggplot нет простого синтаксиса. Ваш лучший подход заключается в предварительном обобщении данных, как вы это делали. –