我一直在与SAS合作以获取一些滚动平均值,并且可以将其提供给我这些输出,但是我希望在可能的情况下通过日期存储区来完成,我不知道该怎么做。
以下是一些示例数据:
Date Amount User Moving Avg
2019-01-01 100 XX1 100
2019-01-02 150 XX1 125
2019-01-03 50 XX1 100
2019-01-20 10 XX1 77.5
2019-01-15 125 XX2 125
2019-01-16 75 XX2 100
2019-01-18 50 XX2 83.3
我希望将平均值存储到日期范围内
例如,如何使用户显示接下来几周的平均金额:
对于用户XX1: 12月30日-1月5日(将为$ 100) 1月20日至1月26日(将为10美元)
对于用户XX2: 1月13日至19日(原价为83.3美元)
答案 0 :(得分:1)
您可以使用PROC FORMAT定义自定义日期范围,然后计算所需的平均值。
proc format;
value datebin
'01Jan2019'd - '19Jan2019'd = bin1
'20Jan2019'd - '26Jan2019'd = bin2
;
run;
proc means data = have ;
var amt;
class user d;
output out = avgs mean = running_avg;
format d datebin.;
run;
data want;
set avgs;
where _type_ = 3;
keep user d running_avg;
run;
您可以编写一个简单的宏来生成格式,该格式系统地指向从任何给定日期开始的每周日期范围。