如果缺少值,我试图将前一列的值复制到当前列,但是我写的代码中有错误。
data X;
input A B C D E;
cards;
1 . . . 2
2 2 3 . .
3 3 4 5 6
4 4 4 2 .
. . 6 . .
;
run;
计划
data Y;
set x;
array arr(5) a--e;
array brr(4) b--e;
do j=1 to dim(arr);
do i =2 to dim(brr);
if brr(i)=. then brr(i)=arr(j);
end;
end;
drop i j;
run;
然而,我得到的输出是
1 . 1 1 2
2 2 3 2 2
3 3 4 5 6
4 4 4 2 4
. . 6 6 6
哪个错了! 我想要的输出是这样的:
1 1 1 1 2
2 2 3 3 3
3 3 4 5 6
4 4 4 2 4
. . 6 6 6
代码有什么问题?
答案 0 :(得分:4)
您想要4 4 4 2 2
而不是4 4 4 2 4
吗?
您只需要一个循环:
试试这段代码:
data Y;
set x;
array arr(5) a--e;
do i=2 to dim(arr);
if arr(i)=. then arr(i)=arr(i-1);
end;
drop i;
run;
另外,不要忘记考虑此代码中发生的事情! 您可以尝试检查每一行和每一个i: