r - 将每日数据汇总到每周,今天结束
问题描述
我目前正在构建一些与 covid 相关的数据图表......我的脚本会出去并下载最新数据并从那里开始。我结束了看起来像的数据框
head(NMdata)
Date state positiveIncrease totalTestResultsIncrease
1 2020-05-19 NM 158 4367
2 2020-05-18 NM 81 4669
3 2020-05-17 NM 195 4126
4 2020-05-16 NM 159 4857
5 2020-05-15 NM 139 4590
6 2020-05-14 NM 152 4722
我一直在使用tq_transmute
from 的函数汇总每周数据tidyquant
。
NMweeklyPos <- NMdata %>% tq_transmute(select = positiveIncrease, mutate_fun = apply.weekly, FUN=sum)
这有效,但它在一年中的一周聚合,从星期日开始几周。
head(NMweeklyPos)
Date positiveIncrease
<dttm> <int>
1 2020-03-08 00:00:00 0
2 2020-03-15 00:00:00 13
3 2020-03-22 00:00:00 44
4 2020-03-29 00:00:00 180
5 2020-04-05 00:00:00 306
6 2020-04-12 00:00:00 631
因此,例如,如果我今天运行它(恰好是星期三),我的最后一个条目是星期一、星期二、星期三的部分星期。
tail(NMweeklyPos)
Date positiveIncrease
<dttm> <int>
1 2020-04-19 00:00:00 624
2 2020-04-26 00:00:00 862
3 2020-05-03 00:00:00 1072
4 2020-05-10 00:00:00 1046
5 2020-05-17 00:00:00 1079
6 2020-05-19 00:00:00 239
就我的图表而言,这最终是一个很小的值,所以我在最后舍弃了部分周,但这意味着我要丢弃最新的数据。
我宁愿从数据集的开始扔掉部分星期,并让聚合自动使用在脚本运行的任何一天结束的星期。因此,如果我今天(周三)运行它,它将在周三结束的几周内进行汇总,以便我包含最新的数据......我可以从数据开始时删除部分周。但是明天它将选择周四结束的几周,等等。而且我不想每次都硬编码周末的日期并更改它。
我怎样才能实现这一目标?
解决方案
使用 lubridate,下面的代码将找到一周中的哪一天,并将该天定义为每周的地板。
希望这可以帮助!
library(lubridate)
library(dplyr)
end = as.Date("2020-04-14")
data = data.frame(
date = seq.Date(as.Date("2020-01-01"), end, by = "day"),
val = 1
)
# get the day of the week
weekday = wday(end)
# using the floor_date function we can use todays date to determine what day of the week will be our floor
data%>%
mutate(week = floor_date(date, "week", week_start = weekday))%>%
group_by(week)%>%
summarise(total = sum(val))
推荐阅读
- c# - Xamarin 中 XAML 的 BindingProxy
- amazon-web-services - 从 cognito 身份池 identityId 获取 cognito 用户池用户名
- csrf - 419 CSRF Token Mismatch 在注销并重新登录后
- java - 获取随机按钮并设置特定值
- java - 如何将 json 数据从主报表传递到子报表 Jaspersoft Studio
- sqlite - 在连接 sqlite 的表时包括一个表中的值总和
- java - build.xml fx:association 抛出 NullPointerException
- visual-studio - 从 GitHub.com 克隆 VS 项目并将其作为文件结构加载到 VS 中,而不是 VS 项目
- php - WordPress PHP 和 PHP 到 JSON 编码的数组
- r - 基于R中的另一个数据框在数据框中查找值