R:按日期累计-(每30分钟平均) [英] R: aggregate by date - (every 30min mean)

查看:100
本文介绍了R:按日期累计-(每30分钟平均)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经为此苦苦挣扎了一段时间:
我有一个数据框,其中包含5分钟(大约6个月)不同参数的测量值。我想汇总它们,并每30分钟获取每个参数的平均值。这是一个简短的示例:

I have been struggling with this for a while now: I have a data frame that contains 5-minute measurements (for around 6 months) of different parameters. I want to aggregate them and get the mean of every parameter every 30 min. Here is a short example:

TIMESTAMP <- c("2015-12-31 0:30", "2015-12-31 0:35","2015-12-31 0:40", "2015-12-31 0:45", "2015-12-31 0:50", "2015-12-31 0:55", "2015-12-31 1:00", "2015-12-31 1:05", "2015-12-31 1:10", "2015-12-31 1:15", "2015-12-31 1:20", "2015-12-31 1:25", "2015-12-31 1:30")
value1 <- c(45, 50, 68, 78, 99, 100, 5, 9, 344, 10, 45, 68, 33)
mymet <- as.data.frame(TIMESTAMP, value1)
mymet$TIMESTAMP <- as.POSIXct(mymet$TIMESTAMP, format = "%Y-%m-%d %H:%M")

halfhour <- aggregate(mymet, list(TIME = cut(mymet$TIMESTAMP, breaks = "30 mins")), 
  mean, na.rm = TRUE)

我想要得到什么是在00:35和1:00之间的平均值,并将其称为DATE-1:00AM,但是,我得到的是:在00:30和00:55之间的平均值,这称为DATE-12:30am。

What I want to get is the average between 00:35 and 1:00 and call this DATE-1:00AM, however, what I get is: average between 00:30 and 00:55 and this is called DATE-12:30am.

如何更改函数以为我提供所需的值?

How can I change the function to give me the values that I want?

推荐答案

如果正确构建了 mymet ,则可以削减 TIMESTAMP 放入垃圾箱(您可以使用 cut.POSIXt 进行此操作),以便可以汇总

If you get mymet constructed properly, you can cut TIMESTAMP into bins (which you can do with cut.POSIXt) so you can aggregate:

mymet$half_hour <- cut(mymet$TIMESTAMP, breaks = "30 min")

aggregate(value1 ~ half_hour, mymet, mean)

##             half_hour   value1
## 1 2015-12-31 00:30:00 73.33333
## 2 2015-12-31 01:00:00 80.16667
## 3 2015-12-31 01:30:00 33.00000






数据




Data

mymet <- structure(list(TIMESTAMP = structure(c(1451539800, 1451540100, 
    1451540400, 1451540700, 1451541000, 1451541300, 1451541600, 1451541900, 
    1451542200, 1451542500, 1451542800, 1451543100, 1451543400), class = c("POSIXct", 
    "POSIXt"), tzone = ""), value1 = c(45, 50, 68, 78, 99, 100, 5, 
    9, 344, 10, 45, 68, 33)), .Names = c("TIMESTAMP", "value1"), row.names = c(NA, 
    -13L), class = "data.frame")

这篇关于R:按日期累计-(每30分钟平均)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆