按列替æ¢ç¼ºçœå€¼ä¸ºéžé›¶å€¼

时间:2015-05-18 10:25:15

标签: sas

æ•°æ®ï¼š

A B C D E
2 3 4 . .
2 3 0 0 .
0 3 4 1 1
0 . 4 0 1
2 0 0 0 1

ç†æƒ³è¾“出:

A B C D E
2 3 4 1 1
2 3 0 0 1
0 3 4 1 1
0 3 4 0 1
2 0 0 0 1

对于æ¯åˆ—,åªæœ‰3个å¯èƒ½çš„值:任æ„整数,零和缺失值。

我想用相应列中的éžé›¶å€¼æ›¿æ¢ç¼ºå¤±å€¼ã€‚

如果任æ„整数为零,则缺失值应替æ¢ä¸ºé›¶ã€‚

对于实际问题,行数和列数ä¸å°ã€‚

1 个答案:

答案 0 :(得分:2)

创建两个数组 - 一个包å«åˆ—å,å¦ä¸€ä¸ªåŒ…å«å˜é‡ä»¥ä¿å­˜ä»»æ„整数。循环é历数æ®é›†ä¸€æ¬¡ä»¥èŽ·å–整数(循环é历数组中的列),然åŽå†æ¬¡è¾“出值,在必è¦æ—¶æ›¿æ¢ï¼ˆå†æ¬¡å¾ªçŽ¯é历数组中的列)。

data want(drop=i int1-int5);
  do until (eof);
    set have end=eof;
    array _col a--e;
    array _int int1-int5;
    do i = 1 to dim(_col);
      if _col(i) not in (.,0) then _int(i)=_col(i);
    end;
  end;
  do until (_eof);
    set have end=_eof;
    do i = 1 to dim(_col);
      if missing(_col(i)) then _col(i)=_int(i);
    end;
    output;
  end;
run;