1

指定されたビン幅の移動平均で新しい列を生成したいので、そのためにzooパッケージ(rollmean関数)を使用しました。私のデータシートは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)

私はあなたが私に与えることができるどんな助けにも感謝します、私はこれにずっと長い間立ち往生しています。前もって感謝します。

4

1 に答える 1

1

そこにはほぼ確実に NA があり、それが を介して伝播しrollmean()ます。この小さな実験が示すように、100 万の値自体は問題を引き起こしません。

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> 

ここでの唯一の NA は、最初に初期ラグが導入されたことによるものです。

しかし、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>

最終的に 432k の NA が続きます。

于 2012-04-11T18:56:37.363 に答える