Как я могу динамически генерировать фрейм данных, когда я собираю больше значений в R? - PullRequest
0 голосов
/ 30 сентября 2018

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

На данный момент,У меня есть данные только за предыдущий месяц, и текущие данные выглядят так:

Date            Count
2018-09-01         12
2018-09-02         23
2018-09-03          5
2018-09-04          8
.                   .
.                   .
.                   .
2018-09-30         10

Движение вперед, будет собираться больше данных и будет значение для столбца «Количество» для каждого дня.

Я могу преобразовать вышеупомянутый df в month.df, используя следующее:

library(dplyr)
df %>% group_by(month=floor_date(Date, "month")) %>% summarize(Count=sum(Count))

month      Users
2018-09-01   165

Если я построю график ggplot, используя этот новый df, он даст мне только одинбар, так как в настоящее время нет данных для других месяцевТем не менее, я все еще хотел бы построить месячный график с 0 для месяцев, где нет значений.Моя цель - создать фрейм данных, который выглядит следующим образом:

Year Month Count
2018   Jan     0
2018   Feb     0
2018   Mar     0
2018   Apr     0
2018   May     0
2018   Jun     0
2018   Jul     0
2018   Aug     0
2018   Sep    55
2018   Oct     0
2018   Nov     0
2018   Dec     0

, чтобы я мог построить диаграмму, которая выглядит следующим образом:

library(ggplot)
ggplot(monthly.users, aes(x= Month, y= Count, fill= Month)) + geom_bar(stat= "identity")

Month on Month Chart

И значения для графиков (т.е. каждый месяц) будут автоматически генерироваться по мере сбора данных.

Не уверен, что мне нужно написать какую-то функцию для вычисления значений для каждого месяца, а затем выполнить rbind в окончательный фрейм данных.Большое спасибо, если кто-нибудь может мне помочь в этом!

1 Ответ

0 голосов
/ 30 сентября 2018

Padr::pad - полезная функция для такого рода вещей.

monthly.users <- df %>% 
  group_by(month = lubridate::floor_date(Date, "1 month")) %>%  
  summarize(Count=sum(Count)) %>%
  padr::pad(start_val = lubridate::ymd(20180101), 
            interval = "1 month") %>%
  mutate(Count = tidyr::replace_na(Count, 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...