やりたい事
* サンプルデータ ; data DT1; input (SUBJID A B C D) ($); cards; 001 . bb . aa 002 . . cc . 003 aa . cc bb 004 . . . . ; |
上のデータで変数A, B, C, D のうち、非欠損値を左にシフトしたい。
では解決法。と、その前に前提条件
- 左にシフトしたい変数はすべて同じ型であること。
解決法
data DT2; set DT1; length COL1-COL4 $5.; array AR1(*) A B C D; array AR2(*) COL1-COL4; NO = 0; do i=1 to dim(AR1); if not missing(AR1(i)) then do; NO + 1; AR2(NO) = AR1(i); end; end; run; |
概要
まず変数A, B, C, D を配列に入れる。
配列の値をループで順番に見ていき、もし非欠損値だったら新しい変数COL1~COL4へ順番に放り込んでいく。
なんか他にいい方法あったら教えてほしいです。
0 件のコメント:
コメントを投稿