我有一些数据集是每1分钟收集一次,但我必须用10分钟的数据平均数来替换数据。所以我有这个R代码。R:如何计算变量的每10行的平均值
for(k in 1:(length(temp[,1])/10)){
temp2[k,1]<-temp[1,1]
temp2[k,2]<-temp[k*10,2]
temp2[k,3]<-mean(na.omit(as.numeric(temp[((k-1)*10+1):k*10,3])))
}
但是,这段代码的效率太低了。 还有一个问题。由于缺少一些数据,时间变量并不总是连续的。而且我必须计算每10分钟的真实数据(例如,2014-01-01 00:00至2014-01-01 00:10),而不管这10分钟有多少obs。所以循环去
tmp<-na.omit(temp[temp[,2]>(st+600*(k-1)) & temp[,2]<=(st+600*k),])
temp2[k,1]<-tmp[1,1]
temp2[k,2]<-st+600*k
temp2[k,3]<-mean(na.omit(as.numeric(tmp[,3])))
这是不能忍受的。它不能有效地处理像“有几个月不见了”的情况。 那么,如何在R中解决这个问题,效率不低。
原始数据:
Time Var1
2014-01-01 00:01 10
2014-01-01 00:02 12
2014-01-01 00:03 43
...
2014-01-01 00:10 52
所需的输出:
Time Var1
2014-01-01 00:10 (mean of every 10 mins)
2014-01-01 00:20 (mean of every 10 mins)
...
你能提供一些数据和所需的输出吗? – DatamineR 2014-12-02 03:07:04
您需要使用dput()将我们的数据的编辑子集转储给我们。看看'zoo :: rollmean()'fn和'tseries'包。 – smci 2014-12-02 03:09:26