bobguy 发表于 2014-4-12 10:44 
Here is a more concise solution.
data need;
多谢bobguy
你这里的方法就是我之前想到的,也是我用在我的GetMovingStats宏里的方法
我这个宏用于计算滚动均值、标准差、下标准差、最大回撤、相关系数之类的,写得比较复杂,也没什么条理,光一个宏文件就用了20几k
里面用的方法就是用临时数组保存之前一定时间窗口内的数据,然后对临时数组进行计算,因为时间窗口固定,所以临时数组的大小也固定,在定义临时数组的时候指定就好了
这回的问题是变动的临时数组,光设置为tmp[10000]害怕不够robust,但是我试了下
array tmp[ 星号 ] _temporary_ 会报错,后来我又试了下把10000改为1000000(百万量级而已,平时我的数据集基本上都是这个量级),然后SAS直接死了,过了好长一阵报出如下错误:
ERROR: The SAS System stopped processing this step because of insufficient memory.
这是我第一次遇到这种错误,我觉得临时数组应该是保存在内存,而数据集是在硬盘,所以不能拿临时数据来做这件事了