我有一些數據集是每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