【问题标题】:Daily average calculation from multiple year daily weather data?从多年的每日天气数据计算每日平均值?
【发布时间】:2018-07-01 08:44:20
【问题描述】:

我有一个从 1984 年到 2014 年 31 年的每日数据。我想计算变量 31 年的每日平均值

date    Min_daily   Max_daily   Rain_daily 
01-01-1984  18.8    3.6          0  
02-01-1984  20.2    3.8          0  
03-01-1984  19      4.2          0
.
.
.
30-12-2014  19.4    2.2          0
31-12-2014  18.5    7            0
01-01-2015  17.2    7.2          0

在R软件中怎么做?

【问题讨论】:

  • 日均值是什么意思?您不能仅使用最小值和最大值来计算一组值的平均值。例如,mean(c(1, 2, 300))mean(c(1,200, 300)) 不相等。
  • @RobJensen OP 想要在 31 年中的每一天平均 366 个不同的平均分钟、最大和降雨。
  • 数据集有 31(年)*365.25(每年的天数)~11,323 行,我希望获得 31 年的平均每日值,这将只给出 365 行。
  • @BappaDas 它会给你 366 天。
  • 请使用dput(my_data_frame)(甚至只是您的数据的一个子集),然后在您的问题中包含输出。这样,其他人更有可能为您提供正确的解决方案。

标签: r average


【解决方案1】:

创建一个新变量

yourData$day <- format(yourData$date, format='%m-%d')

并使用您最喜欢的平均聚合器,在基础 R 中 tapplyaggregate 工作。

示例:aggregate(cbind(Min_daily, Max_daily, Rain_daily) ~ day, data=yourData)

【讨论】:

  • format(yourData$date, format='%m-%d') 返回 "1984-01-01" "1984-01-02" "1984-01-03" 中的日期"1984-01-04" "1984-01-05" 格式。我没有得到想要的结果。我正在使用以下代码: data$day
  • @BappaDas 是“日期”实际上是一个日期?如果没有,请这样做或只使用substr
  • 能否请您详细说明代码,以便我得到想要的结果
  • 使用as.Date(data$date, format='%d-%m-%Y') 将向量转换为日期。或使用substr(data$date, 1, 5)
  • 非常感谢@AdamO,as.Date(data$date, format='%d-%m-%Y') 为我解决了问题。
猜你喜欢
  • 2021-12-18
  • 2021-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
相关资源
最近更新 更多