Построение столбчатой ​​диаграммы с накоплением по квартальным временным рядам - PullRequest
1 голос
/ 27 сентября 2019

Я работал с данными об использовании антибиотиков за 6-летний период и сумел построить гистограмму с общим количеством употреблений антибиотиков за квартал за каждый год.Однако теперь мне нужно сделать то же самое, но с итогами для каждого класса антибиотиков, использованных за квартал.Я хотел сделать это, составив столбчатую диаграмму с накоплением (каждый квартальный столбец будет показывать x количество каждого класса, использованного в этом квартале).

Некоторые примерные данные из набора данных:

Date Antibiotic.Total Total.Cephalosporin Total.AminoglycosideTotal.B.Lactam
1   14/05/2013  0.60    0.60    0.00    0.00    
2   03/07/2013  1.20    1.20    0.00    0.00    
3   02/08/2013  4.62    0.00    2.82    1.80    
4   02/08/2013  0.60    0.60    0.00    0.00    
5   20/08/2013  1.20    1.20    0.00    0.00    
6   14/09/2013  1.20    1.20    0.00    0.00    
7   21/10/2013  0.90    0.90    0.00    0.00    
8   14/11/2013  0.60    0.60    0.00    0.00    
9   14/11/2013  2.25    2.25    0.00    0.00
10  01/05/2014  0.60    0.60    0.00    0.00    
11  29/08/2014  0.50    0.50    0.00    0.00    
12  11/09/2014  6.00    4.00    2.00    0.00    
13  11/09/2014  1.20    0.80    0.40    0.00    
14  11/09/2014  0.60    0.60    0.00    0.00    
15  02/10/2014  20.00   0.00    0.00    0.00    
16  20/10/2014  2.58    0.00    1.98    0.00    
17  20/10/2014  5.00    5.00    0.00    0.00    
18  02/04/2015  1.20    1.20    0.00    0.00    
19  24/04/2015  31.50   0.00    17.50   14.00   
20  29/04/2015  0.45    0.45    0.00    0.00    
21  30/04/2015  31.50   0.00    17.50   14.00   
22  03/05/2015  18.00   0.00    10.00   8.00    
23  03/05/2015  45.00   0.00    25.00   20.00

Мне удалось построить общее количество антибиотиков ежеквартально, используя следующий пример кода;

datapractice %>%
mutate(Q = lubridate::quarter(datepractice, with_year = T)) %>%
group_by(Q) %>% 
summarize(Antibiotic_by_Q = sum(Antibiotic.Total)) %>% 
ggplot(aes(Q, Antibiotic_by_Q)) + geom_bar(stat = "identity", fill = 
"steelblue") + scale_x_yearqtr(format = "%Y") + ylab("Antibiotic Total 
(Grams)") + xlab("Date (Quarters/Year)") +
labs(title = "Antibiotic Use Over a 6 Year Period"

Я попытался изменить приведенный выше код, изменив строку кода, начинающуюся с суммирования (чтобы показать следующее

`summarize(Antibiotics_by_Q = sum(Total.Cephalosporin, 
Total.Aminoglycoside, Total.B.Lactam)) %>%`

Увы ... это не сработало :(

ps см. Прикрепленное изображение для графика квартальных итогов антибиотиков ...

bar plot

Любая помощь, чтобы попытаться отформатировать гистограмму, которую я уже сделалпоказывать данные в виде гистограммы с накоплением очень хотелось бы! :)

1 Ответ

0 голосов
/ 27 сентября 2019

Я не уверен, что вопрос задает следующее, но хитрость заключается в том, чтобы summarise_if столбцы были числовыми, а затем изменяться с широкого на длинный формат .

Я удалил пользовательский цвет, так как теперь есть 4 цвета.

library(tidyverse)
library(zoo)
library(lubridate)

datapractice %>%
  mutate(Date = dmy(Date),
         Q = quarter(Date, with_year = TRUE)) %>%
  group_by(Q) %>% 
  summarise_if(is.numeric, sum, na.rm = TRUE) %>%
  gather(Key, Total, -Q) %>%
  ggplot(aes(Q, Total, fill = Key)) +
  geom_bar(stat = "identity") +
  scale_x_yearqtr(format = "%Y") + 
  ylab("Antibiotic Total (Grams)") + 
  xlab("Date (Quarters/Year)") +
  labs(title = "Antibiotic Use Over a 6 Year Period")
...