首页 > 解决方案 > 循环日期以计算均值

问题描述

我有一个从 2013 年到 2018 年的日期数据框,其中包含我正在研究的位置的每日降水量值。我想计算上述年份每个日期的平均降水量。例如,2013 年至 2018 年 6 月 1 日的平均降水量。我将使用这个每日平均值来研究 2013 年至 2018 年平均每日降水量的每日偏差。

这就是我的数据看起来像 DataTable

我不知道如何为此编写循环,所以我没有任何代码可以显示。

此循环的输出应该是一年中的日期列表,每个日期都有一个长期平均值,如下所示:

Date (dd/mm)    Mean
01-01           1.5
02-01           4.6
03-01             5
  .
  .
31-12            6

谢谢!

标签: rfor-looptime-series

解决方案


这已经在许多其他帖子中得到了回答。的组合

  1. 本问题所述转换为日期
  2. 计算此问题中列的平均值和/或
  3. 计算本问题中描述的分组平均值

会回答你的问题。

我会假设您的 dataTable 实际上是data.tableor data.frame,或者是我将调用 data 的简写data。我将提供一个使用and函数的baseR 版本,我将提供一个使用它们的子集选项的示例withavedata.table

library(lubridate)
library(data.table)
#Data frame way
with(data, ave(Vil_481690, #variable to calculate mean 
               year(Vil_dates), #which variables to group (can be any number of variables)
               FUN = mean #already standard
               ))
#data.table way
setDT(data) #change data to a data.table
data[, mean(Vil_481690), by = year(Vil_dates)])]

请注意,这些尚未经过测试,因为没有可复制的数据,因此可能在某个地方或另一个地方存在拼写错误。


推荐阅读