У меня есть данные, которые выглядят так:
df <- data.frame (
cancer = c(1, 0, 1, 0, 0, 1, 0, 0, 0, 0),
CVD = c(0, 1, 1, 0, 1, 0, 0, 0, 0, 0),
diab = c(0, 0, 0, 1, 0, 1, 0, 0, 1, 0),
stroke = c(0, 1, 1, 0, 1, 0, 0, 0, 1, 0),
asthma = c(1, 1, 1, 0, 1, 1, 0, 0, 0, 0),
SR_hlt = c(1, 2, 2, 2, 1, 1, 2, 2, 2, 1))
Я хочу создать гистограмму, только для людей, страдающих интересующей болезнью, где бары гистограммы заказаныпо доле людей, у которых SR_hlt == 1.
Для построения этого графика я использую следующий код
1) Соберите данные
df_grp <- df %>%
gather(key = condition, value = Y_N, -SR_hlt) %>%
group_by(condition, Y_N, SR_hlt) %>%
summarise(count = n()) %>%
mutate(freq = round(count/sum(count) * 100, digits = 1))
2) Сюжетэти данные
df_plot <- df_grp %>%
filter(Y_N == 1) %>%
ggplot(aes(x = reorder(condition, -freq), y = freq, fill = factor(SR_hlt)), width=0.5) +
geom_bar(stat="identity", position = position_dodge(0.9))
df_plot
x = reorder(condition, -freq)
должен быть тем, что упорядочивает бары, но я не думаю, что это работает в этом случае, потому что значения freq зависят от значения третьей переменной, SR_hlt.Можно ли упорядочить бары по значению freq
при значении SR_hlt == 1?