【问题标题】:Loop over date to calculate means循环日期以计算均值
【发布时间】:2019-09-16 23:45:51
【问题描述】:

我有一个从 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

谢谢!

【问题讨论】:

  • 而不是添加屏幕截图,请dput您的 df 并将代码粘贴到您的问题中,以便有一个可重现的数据示例。

标签: r for-loop time-series


【解决方案1】:

这已在大量其他帖子中得到解答。一个组合

  1. 按照this question 中的说明转换为日期
  2. 计算this question 中列的平均值和/或
  3. this question 中所述计算分组平均值

会回答你的问题。

我假设您的数据表实际上是data.tabledata.frame,或者我将其简称为数据data。我将使用withave 函数提供base R 版本,我将使用它们的子集选项提供data.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)])]

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2016-12-22
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多