我想动态生成一个数据框,以便在收集更多数据时自动更新行值,以便可以在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
如果我使用这个新的df绘制ggplot图表,它将仅给我一个柱线,因为当前其他月份没有数据。但是,我仍然想在没有值的月份中绘制一个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")
并且在收集数据时将自动生成图表的值(即每个月)。
不确定我是否需要编写一些函数来计算每个月的值,然后对最终数据框进行rbind。非常感谢有人可以帮助我!
答案 0 :(得分:1)
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))