您好我想知道如何将其添加到SAS代码中:
我的数据如下:
Balance | Month | Outstanding
--------+-------+--------------
1000 | 0 |
200 | 1 |
300 | 2 |
400 | 3 |
500 | 4 |
800 | 5 |
750 | 6 |
650 | 7 |
740 | 8 |
580 | 9 |
650 | 10 |
523 | 11 | 7093
654 | 12 |
458 | 0 |
789 | 1 |
852 | 2 |
236 | 3 |
1258 | 4 |
4528 | 5 |
78520 | 6 |
1258 | 7 |
4821 | 8 |
15870 | 9 |
1587 | 10 |
1599 | 11 | 111776
6520 | 12 |
我希望它看起来像这样:
Balance | Month | Outstanding
--------+-------+------------
1000 | 0 | 7093
200 | 1 | 7093
300 | 2 | 7093
400 | 3 | 7093
500 | 4 | 7093
800 | 5 | 7093
750 | 6 | 7093
650 | 7 | 7093
740 | 8 | 7093
580 | 9 | 7093
650 | 10 | 7093
523 | 11 | 7093
654 | 12 | 7093
458 | 0 | 111776
789 | 1 | 111776
852 | 2 | 111776
236 | 3 | 111776
1258 | 4 | 111776
4528 | 5 | 111776
78520 | 6 | 111776
1258 | 7 | 111776
4821 | 8 | 111776
15870 | 9 | 111776
1587 | 10 | 111776
1599 | 11 | 111776
6520 | 12 | 111776
基本上我想填补整个0-12个月范围内的空单元格,其中0-11月份的余额总和为0-12个月的下一个集合。
在Excel中,我可以使用此格式来完成此操作。这里假设余额的列号是A,月份是B,而未完成的是C:
=IF(B2=0,SUM(A2:A13),C1)
然后只需将公式拖动到移动总和
我只是不确定如何在SAS代码中创建等效代码。
答案 0 :(得分:0)
可以使用$anomius = "your_file.php";
/** @define "$anomius" "/absolute/path/to/your/php/file" */
require_once($anomius);
:
PROC EXPAND
你的问题并不完全清楚,需要重新格式化,但proc expand data=have
out=want;
by <by variables>;
convert balance = outstanding / transform=(movsum 12);
run;
会做你想做的事。您可以阅读SAS website上的语法。
答案 1 :(得分:0)
我已将输入数据设置为:
data have;
input balance month outstanding;
datalines;
1000 0 .
200 1 .
300 2 .
400 3 .
500 4 .
800 5 .
750 6 .
650 7 .
740 8 .
580 9 .
650 10 .
523 11 7093
654 12 .
458 0 .
789 1 .
852 2 .
236 3 .
1258 4 .
4528 5 .
78520 6 .
1258 7 .
4821 8 .
15870 9 .
1587 10 .
1599 11 111776
6520 12 .
;
您可以将数据与自身组合以获得所需的结果,如下所示:
data want;
set have(where=(outstanding ne .));
do until (month=12);
set have(drop=outstanding);
output;
end;
run;
此致 阿米尔。