Как я могу группировать график плотности и плотность каждой суммы группы равна единице при использовании взвешенных данных?Плотность каждой группы взвешенных значений геомассы равна одному
ggplot2
help for geom_density()
предлагает взломать для использования взвешенные данные: деление на сумму весов. Но при группировке это означает, что общая плотность групп составляет одну. Я хотел бы, чтобы плотность каждой группы была общей.
Я нашел два неуклюжих способа сделать это. Во-первых, чтобы рассматривать каждую группу как отдельный набор данных:
m <- ggplot()
m + geom_density(data = movies[movies$Action == 0, ], aes(rating, weight = votes/sum(votes)), fill=NA, colour="black") +
geom_density(data = movies[movies$Action == 1, ], aes(rating, weight = votes/sum(votes)), fill=NA, colour="blue")
Очевидные недостатки ручной обработки уровней факторов и эстетики. Я также попытался с помощью функции кадрирования из data.table
пакета, чтобы создать новый столбец для общего количества голосов, приходящихся действий группы, разделив тем, что вместо того, чтобы:
movies.dt <- data.table(movies)
setkey(movies.dt, Action)
movies.dt[, votes.per.group := sum(votes), Action]
m <- ggplot(movies.dt, aes(x=rating, weight=votes/votes.per.group, group = Action, colour = Action))
m + geom_density(fill=NA)
Есть аккуратнее способы сделать это? Из-за размера моих таблиц я бы предпочел не реплицировать строки их взвешиванием ради использования частоты.