将每小时数据聚合为每日聚合 [英] Aggregating hourly data into daily aggregates
本文介绍了将每小时数据聚合为每日聚合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下格式的每小时天气数据:
I have an hourly weather data in the following format:
Date,DBT
01/01/2000 01:00,30
01/01/2000 02:00,31
01/01/2000 03:00,33
...
...
12/31/2000 23:00,25
我需要的是每天的最大值、最小值、平均值,如下所示:
What I need is a daily aggregate of max, min, ave like this:
Date,MaxDBT,MinDBT,AveDBT
01/01/2000,36,23,28
01/02/2000,34,22,29
01/03/2000,32,25,30
...
...
12/31/2000,35,9,20
如何在 R 中做到这一点?
How to do this in R?
推荐答案
1) 这可以使用 zoo 紧凑地完成:
1) This can be done compactly using zoo:
L <- "Date,DBT
01/01/2000 01:00,30
01/01/2000 02:00,31
01/01/2000 03:00,33
12/31/2000 23:00,25"
library(zoo)
stat <- function(x) c(min = min(x), max = max(x), mean = mean(x))
z <- read.zoo(text = L, header = TRUE, sep = ",", format = "%m/%d/%Y", aggregate = stat)
这给出:
> z
min max mean
2000-01-01 30 33 31.33333
2000-12-31 25 25 25.00000
2) 这是一个仅使用核心 R 的解决方案:
2) here is a solution that only uses core R:
DF <- read.csv(text = L)
DF$Date <- as.Date(DF$Date, "%m/%d/%Y")
ag <- aggregate(DBT ~ Date, DF, stat) # same stat as in zoo solution
最后一行给出:
> ag
Date DBT.min DBT.max DBT.mean
1 2000-01-01 30.00000 33.00000 31.33333
2 2000-12-31 25.00000 25.00000 25.00000
(1)自从首次出现以来,read.zoo
的text=
参数被添加到zoo 包中.(2) 小改进.
(1) Since this first appeared the text=
argument to read.zoo
was added in the zoo package.
(2) minor improvements.
这篇关于将每小时数据聚合为每日聚合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文