2016-07-14 3 views
0

私は時間当たりの放射線のレベルでデータセットを持っています。私は前の6時間からの放射線の平均レベルを取得する必要があります。したがって、ポイントCのために私は必要があります:平均(データ$ STRALING [(c-7):(c-1)])Rの前の平均6時間を得る

これは私の問題の解決策になります。 t、時には数時間が欠落しています)、私はforループなしで自動化する方法がわかりません(私は、199056のentriseがあるので避けたいです)

私は、そして、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の関数だけを求めているのであれば、そうではありません。 –

+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))