带有日期存储区的SAS中的平均值

时间:2019-08-01 21:10:24

标签: sas moving-average

我一直在与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美元)

1 个答案:

答案 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;

您可以编写一个简单的宏来生成格式,该格式系统地指向从任何给定日期开始的每周日期范围。