如何使用R计算循环中每五分钟的平均值? [英] how to calculate mean for every five minutes in a loop by using R?
本文介绍了如何使用R计算循环中每五分钟的平均值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想每5分钟计算一次可见度平均值.我尝试使用for循环,但未成功.有人可以帮助修复它吗? 数据已附上
I would like to calculate visibility mean every five minutes. I try to use for loop, but it is not successful. Can someone help to fix it? The data is attached
time V1 harmonic_ave visibility
1 00:00 0.17652184 0 5.6650213
2 00:01 0.23150237 0 4.3196102
3 00:02 0.35068959 0 2.8515246
4 00:03 0.48666769 0 2.0547902
5 00:04 0.54693229 0 1.8283799
6 00:05 0.58146776 0 1.7197858
7 00:06 0.69513934 0 1.4385605
8 00:07 0.90809604 0 1.1012051
9 00:08 1.02237511 0 0.9781146
10 00:09 0.94165997 0 1.0619545
11 00:10 0.74532231 0 1.3417014
这是代码
for (i in seq(from=1,to=1440,by=5)) {
AWIv<-mean(AWI1Hmean_140607$visibility[i:i+5])
}
推荐答案
您可以使用Zoo包中的rollapply
You can use rollapply from zoo package
示例代码
library(zoo)
data1 <- read.table(header=TRUE, text='
id time V1 harmonic_ave visibility
1 00:00 0.17652184 0 5.6650213
2 00:01 0.23150237 0 4.3196102
3 00:02 0.35068959 0 2.8515246
4 00:03 0.48666769 0 2.0547902
5 00:04 0.54693229 0 1.8283799
6 00:05 0.58146776 0 1.7197858
7 00:06 0.69513934 0 1.4385605
8 00:07 0.90809604 0 1.1012051
9 00:08 1.02237511 0 0.9781146
10 00:09 0.94165997 0 1.0619545
11 00:10 0.74532231 0 1.3417014
')
# Convert to zoo object
z <- zoo(data1$visibility, order.by=data1$time)
# Calculate mean for nonoverlapping groups of 5
# align="left": timestamp is taken from the leftmost value.
rollapply(z, 5, mean, by=5, align="left")
00:00 00:05
3.343865 1.259924
这篇关于如何使用R计算循环中每五分钟的平均值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文