嗨所有的R效率大師(和患有類似的問題對我來說),總結在另一個日期/時間參考向量POSIX(日期/時間)參考向量
這是一個效率的問題。我有一些非常大的數據集。一個data.frame包含來自一臺儀器的數據,其中POSIX日期和時間值非常高。另一個數據幀包含來自另一臺儀器的數據,其中一列日期和時間值的採樣頻率要低得多。
我希望將高頻數據幀的彙總值分配給低頻數據幀的時間段。此功能,但速度很慢,當你有幾百萬個數據點:
st <- strptime("22/09/2013 12:00:00", "%d/%m/%Y %H:%M:%S")
st.vec <- st + runif(10,0, 60*60*24)
en.vec <- st.vec + 10*60
tm.hfreq <- strptime("22/09/2013 12:00:00", "%d/%m/%Y %H:%M:%S") + runif(400,0, 60*60*24)
vals.hfreq <- runif(400,0, 12000)
intervalstats <- function(strt, fin, vals, tms){
mns <- NULL
mds <- NULL
sds <- NULL
for (i in seq(1,length(fin))){
mns <- append(mns,mean(vals[(tms > strt[i])&(tms < fin[i])]))
sds <- append(sds,sd(vals[(tms > strt[i])&(tms < fin[i])]))
mds <- append(mds,median(vals[(tms > strt[i])&(tms < fin[i])]))
}
res <- cbind(mns, sds, mds)
res
}
intervalstats(st.vec, en.vec, vals.hfreq, tm.hfreq)
有沒有人有一個建議,以便更有效地,更快速的方法嗎?
我想一些初步暗示將不會初始化'mns'爲'NULL'但作爲'代表(NA,長度(FIN))'(或類似的東西)和-instead'追加' - 用'mns [i] = ..'。另外,你可以只計算一次'vals [(tms> strt [i])&(tms
感謝您的提示。我會嘗試一下。 – user2449710