我希望生成一个具有指定bin宽度的连续平均值的新列,为此,我使用了zoo包(rollmean函数)。我的数据表由100,000行组成,该函数应用于前500,000行,之后它都是NAs生成的,你知道我可能做错了什么吗?
library("zoo")
HB<-bin/2
n<-length(dataraw$S)
data<-dataraw[HB:(n-HB),]
sax<- rollmean (dataraw$S, bin)
data2<-cbind(data,sax)如果你能给我任何帮助,我将不胜感激,我已经被困在这里太久了。提前谢谢。
发布于 2012-04-12 02:56:37
您几乎肯定会有一个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>我最终得到了432k的拖尾NAs。
https://stackoverflow.com/questions/10112149
复制相似问题