datetime - 将每小时数据汇总为每日汇总

标签 datetime r time aggregate

我有以下格式的每小时天气数据:

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


我需要的是每天的最大,最小,平均值之和,例如:

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中执行此操作?

最佳答案

1)这可以使用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的解决方案:

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参数已添加到zoo包中。
(2)细微的改进。

关于datetime - 将每小时数据汇总为每日汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5200437/

相关文章:

javascript 检查日期对象是否至少存在 5 分钟(nodeJS)

python - 如何解析 "UTC+01:00"格式的时区

r - 将行转为列

PHP sleep 准确性

ruby - 指定范围之间的时间

java - 在 Java 中存储、检索和比较日期的最佳方式

python - 无法使用 matplotlib 绘制预测的时间序列值

sql-server - 如何在 SQL Server 2005 中存储时区

r - 如何根据现有日期创建年周字符串值序列?

r - 使用插入符号和 gbm 方法进行多类分类