Я ищу советы по лучшим способам построения пропорции наблюдений в различных категориях.
У меня есть 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()
qaru.site/info/48659/... предлагает нечто похожее со следующим кодом:
ggplot(mydataf, aes(x = foo)) +
geom_bar(aes(y = (..count..)/sum(..count..)))
Но я не хочу "sum (.. count...)" - который дает сумму счета всех ящиков - в знаменателе; скорее, я хочу получить сумму подсчета каждой из категорий "cat2". Я также изучил документацию stat_bin.
Буду благодарен за любые советы и предложения о том, как сделать эту работу.