我想对一些数据进行缩放,我知道如何用
(scale(data.test[,1],center=TRUE,scale=TRUE))我有365个观察(一年),并希望缩放和集中我的数据在20天的回溯期。
例如,我想这样做:“20天回溯期的规范化”意味着,要缩放我的第一个值01/01/2014 (dd/mm/yy),我必须只在20天前进行缩放。所以,从11/12/13到31/12/13以及02/01/14比额表的数值从12/12/13到01/01/14等等。
将数据规范化为=(数据-所有数据的平均值/所有数据的标准差)(请参阅我的代码)
但是,正如我想要的"20天回溯期“意味着我只需要查看20个最后的值,它将是=(数据-20个先前数据的平均值)/20个先前数据的标准差。
我想也许要做个循环?因为我对R很陌生,我不知道如何用R写一个循环,或者即使有更好的方法来做我想做的事情。如果你能帮我解决这个问题。
发布于 2015-07-24 12:14:13
您需要一个20天的回溯:
lookback<-20data.scale<-c() #Create a vector for the data scaledfor(i in lookback:nrow(data)){mean<-mean(data[i-(lookback-1):i,1],na.rm=T)sd<-sd(data[i-(lookback-1):i,1],na.rm=T)*sqrt(((lookback-1))/lookback)data.scale<-c(data.scale,(data[i,1]-mean)/sd) }
对于第20行,您希望使用从第1天到第20天的数据,从第2天到第21天的第21天,等等.
https://stackoverflow.com/questions/31609510
复制相似问题