Sas transformout中的多个操作如何工作?

Sas transformout中的多个操作如何工作?,sas,Sas,我试图了解更多有关Proc Expand和SAS的一般信息。对于transformout中的多个操作是如何协同工作的,我还没有太多的了解。当我运行下面的代码时,SAS似乎只是简单地计算两行的向后移动和 proc expand data=averages out=transformed; id date; convert x=y / transformout=(reverse movsum 2 movsum 1 reverse); by type notsorted; run; 以下是结果示例:

我试图了解更多有关Proc Expand和SAS的一般信息。对于transformout中的多个操作是如何协同工作的,我还没有太多的了解。当我运行下面的代码时,SAS似乎只是简单地计算两行的向后移动和

proc expand data=averages out=transformed;
id date;
convert x=y / transformout=(reverse movsum 2 movsum 1 reverse);
by type notsorted;
run;
以下是结果示例:

y        x
13372   1225
20564   12147
16140   8417
14446   7723
13097   6723
15976   6374
11497   9602
12704   1895
18043   10809
当我稍微修改代码时,我找不到SAS中生成数字的任何模式。这是修改后的代码

proc expand data=averages out=transformed;
id date;
convert x=y / transformout=(reverse movsum 5 movsum 3 reverse);
by type notsorted;
run;
以下是此代码的结果:

y        x
116458  1225
112540  12147
106559  8417
103634  7723
107010  6723
103592  6374
103655  9602
100326  1895
94840   10809

在这种情况下,SAS如何处理多个操作?到目前为止,我还没有在谷歌上找到任何东西,也没有尝试过使用代码的不同场景。

看起来它只是在计算中间结果并将函数应用于该结果。因此,使用
movsum 5 movsum 3
与使用
movsum 5
执行一个过程步骤,然后使用
movsum 3
执行另一个步骤相同

所以如果你运行这个程序

data have ;
  input x @@ ;
cards;
 1225 12147 8417 7723 6723 6374 9602 1895 10809
;

proc expand data=have out=out1 ;
  convert x=movsum2 / transformout=(reverse movsum 2 reverse);
  convert x=movsum5 / transformout=(reverse movsum 5 reverse);
run;

proc expand data=out1 out=final ;
  convert x=y1 / transformout=(reverse movsum 2 movsum 1 reverse);
  convert movsum2=y2 / transformout=(reverse movsum 1 reverse);
  convert x=z1 / transformout=(reverse movsum 5 movsum 3 reverse);
  convert movsum5=z2 / transformout=(reverse movsum 3 reverse);
run;

您将看到Y1=Y2和Z1=Z2。

BY
语句中提到的
TYPE
变量在哪里?还是您发布的所有值都是针对某一级别的类型?@Tom抱歉,我应该澄清或删除这段代码。发布的值都是相同类型的。