创建一个循环来计算R中每15分钟的因子变量的平均值 [英] Create a loop to calculate the mean per factor variable every 15 minutes in R

查看:345
本文介绍了创建一个循环来计算R中每15分钟的因子变量的平均值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的数据具有以下形式:

My data have the following form:

我想创建一个循环,每次都会从开始到接下来的15分钟进行观察,然后在第15分钟至15分钟之后,并且将计算每个传感器的值的平均值。我想找出每个传感器每15分钟平均值变化的差异。
我已将日期设置为

I want to create a loop that every time will take the observations from the beginning till the next 15 minutes, then after the first 15 minutes to additional 15 minutes, etc and will calculate the mean of the values for each sensor. I want to find the difference in the change in mean values per 15 minutes per sensor. I have set the date as

 dtm <- strptime("21/09/2015 10:41:00", format = "%d/%m/%Y %H:%M:%S",
                 tz = "CET")     

和分钟的功能。

mns <- function(m) {x <- m * 60 return(x)}    

quart=rep(NA,nrow(data))
mean.min=rep(NA,nrow(data))
diff.min=rep(NA,nrow(data))
for (i in 0:4){
quart[i] <- data[data$Date >= dtm+mns(15)*i & data$Date <= dtm+mns(15)*(i+1),]
data$mean.min[i]<-aggregate(quart[i]$Value~quart[i]$SensorId, FUN=mean)
data$diff.min[i+1]<-rowMeans(abs(data$mean.min[i+1]-data$mean.min[i]),na.rm=T)}


推荐答案

code> sapply()它结合运行的SensorId组计数和运行15分钟计数。由于其性质,平均值计算为/计数。

Consider this wordy base solution with sapply() which combines running SensorId group counts and running 15 minutes counts. Because of its nature, average is calculated as sum / count.

data$run15minavg <- sapply(1:nrow(data), function(i) {
                sum(((data[1:i, c("Date")] >= (data$Date[i] - as.difftime(15, units="mins")))
                      & (data[1:i, c("Date")] <= (data$Date[i]))
                      & (data[1:i, c("SensorId")] == data$SensorId[i]))
                   *  data[1:i,]$Value) /
                sum((data[1:i, c("Date")] >= (data$Date[i] - as.difftime(15, units="mins")))
                      & (data[1:i, c("Date")] <= (data$Date[i]))
                      & (data[1:i, c("SensorId")] == data$SensorId[i]))
                }    
             )

这篇关于创建一个循环来计算R中每15分钟的因子变量的平均值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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