Ниже приведен код, с которым у меня возникли проблемы, и его вывод. Набор данных связан в нижней части поста.
- Я хочу сгруппировать StateCodes вместе с каждым MSN (в отличие от того, что сейчас отображается в выходных данных).
plotdata <- EnergyData %>%
filter(MSN %in% c("BMTCB", "GETCB", "HYTCB", "SOTCB", "WYTCB")) %>%
filter(Year %in% c("2009")) %>%
select(StateCode, MSN, Data) %>%
group_by(StateCode) %>%
mutate(pct = Data/sum(Data),
lbl = scales::percent(pct))
plotdata
Это приводит к:
Я думал, что функция group_by сделает это для меня, но я хотел бы знать, если я пропускаю ключевой кусок кода?
Как только вышеуказанный блок работает правильно, я хочу создать столбчатые диаграммы бок о бок с помощью StateCode, используя проценты каждого из 5 MSN.
Вот код, который у меня пока есть.
ggplot(EnergyData,
aes(x = factor(StateCode,
levels = c("AZ", "CA", "NM", "TX")),
y = pct,
fill = factor(drv,
levels = c("BMTCB", "GETCB", "HYTCB", "SOTCB", "WYTCB"),
labels = c("BMTCB", "GETCB", "HYTCB", "SOTCB", "WYTCB")))) +
geom_bar(stat = "identity",
position = "fill") +
scale_y_continuous(breaks = seq(0, 1, .2),
label = pct) +
geom_text(aes(label = lbl),
size = 3,
position = position_stack(vjust = 0.5)) +
scale_fill_brewer(palette = "Set2") +
labs(y = "Percent",
fill = "MSN",
x = "State",
title = "Renewable Resources by State") +
theme_minimal()
На данный момент я считаю, что все это связано с тем, как я создаю проценты для гистограмм.
Любая помощь будет великолепной. Спасибо!
Вот данные, которые я использовал Данные об энергии http://www.mathmodels.org/Problems/2018/MCM-C/ProblemCData.xlsx