【发布时间】:2021-01-24 17:31:38
【问题描述】:
我正在尝试计算某个日期范围(例如,从 7 月 21 日到 7 月 28 日)之间设备数量的平均值。
这就是我的数据的样子,例如:
# A tibble: 580,742 x 14
country_region_~ country_region sub_region_1 sub_region_2 census_fips_code date
<chr> <chr> <chr> <chr> <chr> <date>
1 US United States NA NA NA 2020-02-15
2 US United States NA NA NA 2020-02-16
3 US United States NA NA NA 2020-02-17
4 US United States NA NA NA 2020-02-18
5 US United States NA NA NA 2020-02-19
6 US United States NA NA NA 2020-02-20
7 US United States NA NA NA 2020-02-21
8 US United States NA NA NA 2020-02-22
9 US United States NA NA NA 2020-02-23
10 US United States NA NA NA 2020-02-24
# ... with 580,732 more rows, and 8 more variables:
# retail_and_recreation_percent_change_from_baseline <dbl>,
# grocery_and_pharmacy_percent_change_from_baseline <dbl>,
# parks_percent_change_from_baseline <dbl>,
# transit_stations_percent_change_from_baseline <dbl>,
# workplaces_percent_change_from_baseline <dbl>,
# residential_percent_change_from_baseline <dbl>, date2 <date>, date3 <date>
而且我能够使用此代码手动计算日期范围之间的平均值:
library(dplyr)
retailavg <- google.mobility %>%
mutate(weekrange = date >= "2020-02-15" & date <= "2020-02-21") %>%
filter(weekrange) %>%
group_by(sub_region_2) %>%
summarise(avgretail = mean(retail_and_recreation_percent_change_from_baseline))
循环是我最糟糕的噩梦,但如果有任何方法可以创建循环/应用,这样我就不必手动执行每个日期范围,它肯定会有所帮助!我是一个绝对的初学者,所以任何建议都会有所帮助!
【问题讨论】:
-
你能分享一个使用 dput() 函数的可重现的例子吗?
-
date >= "2020-02-15"是一个 string 比较,而不是日期的(类似数字的)比较。在这种格式下,它已经足够接近了,但可以肯定的是……date >= as.Date("2020-02-15")更好。
标签: r loops date average apply