Sas transformout中的多个操作如何工作?
我试图了解更多有关Proc Expand和SAS的一般信息。对于transformout中的多个操作是如何协同工作的,我还没有太多的了解。当我运行下面的代码时,SAS似乎只是简单地计算两行的向后移动和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 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抱歉,我应该澄清或删除这段代码。发布的值都是相同类型的。