我想扩展&中心一些数据,我知道如何用
来扩展它(scale(data.test[,1],center=TRUE,scale=TRUE))
我有365次观察(一年),并希望扩展和扩展将我的数据集中在一个20天的回顾期。
例如我想这样做: "标准化为20天的回顾期"意味着要缩放我的第一个值01/01/2014(年/月/日)我必须仅在20天前缩放它。所以从2013年12月12日到2013年12月31日的价值 而对于02/01/14,它从12/12/13到01/01/14等等。
将数据标准化 =(数据 - 所有数据的平均值/所有数据的标准差(参见我的代码)
但是我想要" 20天的回顾期"意味着我只需要查看最后的20个值 =(数据 - 前20个数据的平均值)/ 20个先前数据的标准偏差
我想要制作一个循环吗?由于我是R的新手,我不知道如何在R中编写循环,或者即使有更好的方法来做我想要的... 如果你可以帮我这个。
答案 0 :(得分:2)
您需要20天的回顾:
lookback<-20
data.scale<-c() #Create a vector for the data scaled
for(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) }
对于要使用第1天到第20天的数据,第21天从第2天到第21天的数据进行标准化的第20行,依此类推......