自己代码:
data a;
input clsprc1 clsprc2 clsprc3;
cards;
1 3 5
. . .
2 5 6
;
data result;
set a;
array clsprc _numeric_;
retain temp;
do over clsprc;
if ^missing(clsprc) then temp=clsprc;
else clsprc=temp;
drop temp;
end;
run;
a数据集:
| | clsprc1 | clsprc2 | clsprc3 |
| 1 | 1 | 3 | 5 |
| 2 | . | . | . |
| 3 | 2 | 5 | 6 |
想要的结果:result数据集
| | clsprc1 | clsprc2 | clsprc3 |
| 1 | 1 | 3 | 5 |
| 2 | 1 | 3 | 5 |
| 3 | 2 | 5 | 6 |
现在运行的结果:
| | clsprc1 | clsprc2 | clsprc3 |
| 1 | 1 | 3 | 5 |
| 2 | 5 | 5 | 5 |
| 3 | 2 | 5 | 6 |
我知道retain能复制之前的值,不过我想要的同列前一列的,而不是逐行排列的前一期,自己也是受这篇帖子的启发编写的,
https://bbs.pinggu.org/thread-1317109-1-1.html
这里就是按同列前一行复制的,可能里面用了format和informat吧,但是我这里全是数字,应该也没什么用,自己也想用循环语句,但是想不出其中的嵌套 ,希望各位帮忙。