本文介绍了将小时数据汇总成日常汇总的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个小时的天气数据,格式如下:
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
我需要的是每日总计的最大值, min,ave这样:
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)可以使用动物园紧凑地完成:
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)由于这首先出现 text =
参数为 read.zoo
已添加到动物园包中。
(2)小改进。
(1) Since this first appeared the text=
argument to read.zoo
was added in the zoo package.(2) minor improvements.
这篇关于将小时数据汇总成日常汇总的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!