2016-07-14 31 views
0

我有一個每小時輻射水平的數據集。我需要獲得前6小時的平均輻射水平。所以對於C點我需要:mean(data $ STRALING [(c-7):(c-1)])獲得前6小時的R的平均值

這將是我的問題的解決方案,如果數據集要完成(它是'噸,有時幾個小時都不見了),我不知道如何在沒有for循環的情況下實現自動化(我想避免因爲有199056委託)

我有一個數據幀和時間在POSIXct格式:存在這一點,我不知道

  GLOBALE_STRALING    POSTIME 
    1383116    98 2016-06-10 18:00:00 
    1383118    55 2016-06-10 19:00:00 
    1383125    26 2016-06-10 20:00:00 
    1383130    6 2016-06-10 21:00:00 
    1383137    0 2016-06-10 22:00:00 
    1383142    0 2016-06-10 23:00:00 

我已經破解了我的大腦在這一段時間,現在,我希望的功能。提前致謝。

+0

歡迎CV。我們主要處理統計問題,而不是計算問題。如果你要求處理缺失值的方法,這將是主題。如果你只是要求R中的一個函數來實現你的計算,那麼這是不可能的。 – 2016-07-14 12:01:50

+1

'zoo'包中的'rollapply'函數可能會有所幫助。或者'rollmean'功能。 –

+0

@Sjoerd - 「申請」可以相當快(對於R)。 R並不像速度那麼出名 - 這不是它的價值主張。 – EngrStudent

回答

0

我不太確定這是否滿足您的需求,但我給它一個嘗試:

library(dplyr) 

# define start value for date, which is assumed to be the 
# last value in the time-vector 
start <- dat$POSTIME[nrow(dat)] 

# compute difference of all time points in relation 
# to latest time point in data set 
dat$hours <- as.vector(difftime(start, dat$POSTIME, units = "hours")) 

# create a "grouping" vector, where all 6-hours-span-timepoints 
# are grouped together 
dat$grp <- as.integer(dat$hours/6) 

# group by 6-hours-span and compute mean for each 
# 6-hours time-period 
dat %>% group_by(grp) %>% summarise(mean(STRALING))