【问题标题】:How to create diurnal average function for hourly data如何为小时数据创建日平均函数
【发布时间】:2019-09-13 15:57:44
【问题描述】:

我有 3 个月(6 月、7 月、8 月)的每小时数据,我想显示这三个月期间每天小时的平均值(例如,从第 1 天开始的所有数据的平均值,所有数据的平均值从第 2 天开始,等等)。我开始编写一个函数,但我仍在学习编写函数和循环的最佳方法来做我需要的事情。我的数据确实包含 NA 值,但它是所有 3 个月 24 小时/天的完整数据集。我现在的时间向量是儒略日/十进制的日子,所以小时,6月1日的样子: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.7083 152.6250152.6667 152.7500 152.7917 152.8333 152.8750 152.9167 152.9583,其中152.0000是6月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)
}

【问题讨论】:

  • 请编辑数据样本,例如dput(head(mydata)) 的输出或正确的表格格式。此外,在样本输入中包含所需的结果。

标签: r function average


【解决方案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)
)

【讨论】:

    猜你喜欢
    • 2013-09-30
    • 2022-12-18
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    相关资源
    最近更新 更多