r - 如何为小时数据创建日平均函数
问题描述
我有 3 个月(6 月、7 月、8 月)的每小时数据,我想显示三个月期间每天小时的平均值(例如,从第 1 天开始的所有数据的平均值,从一天一小时开始的所有数据的平均值2等)。我开始编写函数,但我仍在学习编写函数和循环的最佳方法来做我需要的事情。我的数据确实包含 NA 值,但它是所有 3 个月 24 小时/天的完整数据集。My current time vector is in Julian day/decimal day so hours for June 1 look like: 152.0000 152.0417 152.0833 152.1250 152.1667 152.2083 152.2500 152.2917 152.3333 152.3750 152.4167 152.4583 152.5000 152.5417 152.5833 152.6250152.6667 152.7083 152.7500 152.7917 152.8333 152.8750 152.9167 152.9583, where 152.0000 is June 1 (朱利安第 152 天)上午 12 点,依此类推。理想情况下我' 我希望该函数返回 24 个值,这些值是每小时的平均值。最后,我还想将中位数、标准差和标准误差合并到这个函数中。到目前为止我确实写了一些代码,但我真的不知道我写的是否正确,所以任何帮助将不胜感激!
# x is hourly data
# t is time vector, for my data I have Julian Decimal Day
diurnal_avg <- function(x,t){ # input hourly and hourly time data
dayhrvec <- rep(1:24,length.out=t)
hr1points <- which(dayhrvec %in% 1)
}
解决方案
这是一个 dplyr 方法:
library(dplyr)
hourly_data_frame %>%
# Optional, for check: Convert day num to day of year
mutate(day = floor(dates) + as.Date("2019-01-01") - 1) %>%
# Convert decimal part of dates to hour of day
mutate(hour = (dates %% 1) * 24) %>%
# Summary time!
group_by(hour) %>%
summarize(avg_value = mean(values),
median = median(values),
std_dev = sd(values))
## A tibble: 24 x 4
# hour avg_value median std_dev
# <dbl> <dbl> <dbl> <dbl>
# 1 0 4.89 4.82 0.909
# 2 1.000 4.89 5.10 1.19
# 3 2. 4.68 4.93 0.850
# 4 3 5.26 5.16 0.937
# 5 4.00 5.36 5.46 0.949
# 6 5. 5.05 5.10 0.883
# 7 6 5.13 5.09 0.851
# 8 7.00 5.14 5.21 0.887
# 9 8. 5.09 5.16 0.920
#10 9 5.04 4.84 1.11
## ... with 14 more rows
样本数据
dates <- c(152 + 0:999/24)
hourly_data_frame <- data.frame(
dates = dates,
values = rnorm(1000, 5, 1)
)
推荐阅读
- python - 上传的图片未在 html 上显示
- javascript - 我的节点应用程序在 localhost 上运行良好,但是当我部署在 heroku 上时,它给了我应用程序错误。你可以阅读下面的描述
- android-studio - Android Studios 中未解决的参考
- javascript - 如何在 JavaScript 中将用户重定向到考试页面?
- sql - 查询订单履行可用日期
- python - 二叉搜索树插入字符
- angular - 使用 Prime 自动完成时防止鼠标滚动事件不折叠下拉面板
- node.js - 如何使用基于 Docker 映像的 Lambda 函数运行节点脚本
- javascript - 插件可以更改或添加到顺风配置
- r - 在 r 中,您将如何编写代码以根据两个分箱值的组合获取值?