如何在 R 中使用 scale 进行精确的回顾期?

How to use scale in R for a precise lookback period?

我想缩放和居中一些数据,我知道如何缩放它

(scale(data.test[,1],center=TRUE,scale=TRUE))

我有 365 个观测值(一年),并且想在 20 天的回顾期内缩放和居中我的数据。

例如我想这样做: "Normalized for a 20day lookback period" 意味着要缩放我的第一个值 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 中编写循环,或者即使有更好的方法来做我想做的事...... 如果你能帮我解决这个问题。

You want a 20 days lookback : 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) }

对于第 20 行,您要使用第 1 天到第 20 天的数据、第 21 天从第 2 天到第 21 天的数据进行标准化,依此类推...