2012-04-11 8 views
1

私は指定されたビン幅の実行平均を持つ新しい列を生成したいと私は動物園パッケージ(ロールメン機能)を使用しています。私のデータシートは100万行で構成されており、その機能は最初の500,000に適用されます。その後、すべてのNAが作成されます。動物園パッケージのデータに長すぎますか?

library("zoo") 

HB<-bin/2 
n<-length(dataraw$S) 
data<-dataraw[HB:(n-HB),] 
sax<- rollmean (dataraw$S, bin) 
data2<-cbind(data,sax) 

私はあまりにも長い間、これで立ち往生してきた、あなたは私を与えることができる任意のヘルプをaappreciateでしょう。前もって感謝します。

+2

'?rollmean'は次のように言っています:" rollmeanのデフォルトの方法は、NAsを含む入力を処理しないので、代わりにrollapplyを使用してください。 –

答えて

1

ほとんどの場合、そこにはNAがあり、rollmean()に伝播します。この小さな実験が示すように、それ自体でのトラブルを作成しません億値:

R> library(zoo) 
R> X <- zoo(rnorm(1e6), order.by=Sys.time()+seq(1,1e6)*1e-3) 
R> Xrm <- rollmean(X, 63) 
R> summary(cbind(X, Xrm)) 
    Index        X    Xrm   
Min. :2012-04-11 13:57:28.9 Min. :-5.1857 Min. :-0.5843 
1st Qu.:2012-04-11 14:01:38.9 1st Qu.:-0.6741 1st Qu.:-0.0866 
Median :2012-04-11 14:05:48.9 Median :-0.0011 Median :-0.0013 
Mean :2012-04-11 14:05:48.9 Mean :-0.0011 Mean :-0.0011 
3rd Qu.:2012-04-11 14:09:58.9 3rd Qu.: 0.6727 3rd Qu.: 0.0838 
Max. :2012-04-11 14:14:08.9 Max. : 4.8914 Max. : 0.5874 
                NA's :62  
R> 

ここでの唯一のNASは、初めに初期の遅れの導入によるものです。

しかし、私はXにおける単一NAを導入する場合、すべての地獄の休憩が緩ん:

R> X[567890] <- NA 
R> summary(cbind(X, rollmean(X, 63))) 
    Index        X   rollmean(X, 63) 
Min. :2012-04-11 13:57:28.9 Min. :-5.18574 Min. :-1  
1st Qu.:2012-04-11 14:01:38.9 1st Qu.:-0.67413 1st Qu.: 0  
Median :2012-04-11 14:05:48.9 Median :-0.00110 Median : 0  
Mean :2012-04-11 14:05:48.9 Mean :-0.00109 Mean : 0  
3rd Qu.:2012-04-11 14:09:58.9 3rd Qu.: 0.67268 3rd Qu.: 0  
Max. :2012-04-11 14:14:08.9 Max. : 4.89137 Max. : 1  
           NA's :1   NA's :432173 
R> 

と私は、NASを末尾432kで終わります。

+0

その場合、 'rollapply'を見てください。例えば。 'rollapply(dataraw $ S、width = bin、FUN = mean、fill = NA)'はベクトルの途中でNA値を扱うことができます。 – smu

+0

それだけです!感謝万円!!! –

+0

偉大な - あなたの質問を解決した場合、a)答えを "アップ"して(上向きの矢印をクリック)、b)答えを "受け入れる"(目盛りをクリック)を考慮する必要があります。 –

関連する問題