复制SAS中的上一列值

时间:2015-06-24 13:22:31

标签: sas

如果缺少值,我试图将前一列的值复制到当前列,但是我写的代码中有错误。

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

代码有什么问题?

1 个答案:

答案 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:

  • 什么是arr(i)值?
  • 什么是arr(i-1)值?
  • 是预期的结果? (说服自己问题解决了:))