0

私はこれに似たデータセットを持っています:

DATA zzz;
input prop $15. state $; 
datalines;
101|102|103|224  CA
104|105|106      CA
107|108|109      FL
110|111|112|989  FL
; 
run;

prop変数を分割し、各値を状態に一致する新しい観測値として配置したいと思います。IE、私は最終的に:

プロップ状態

行1:101 CA

行2:102 CA

等。

SASで新しい行を処理するとき、私はいつも混乱します。

4

2 に答える 2

2

これを行うには多くの方法があります。ここに1つあります:

DATA zzz;
   length prop $3 state $2;
   keep prop state;
   input prop_txt $15. state $;
   i = 1;
   do while (i ne 0);
      prop = scan(prop_txt,i,'|');
      i = i + 1;
      if prop = ' '
         then i = 0;
         else output;
      end;
   datalines; 
101|102|103|224  CA 
104|105|106      CA 
107|108|109      FL 
110|111|112|989  FL 
run; 

もちろん、これはあなたが説明したデータに基づいています。そして、保持したい変数の長さを仮定しました。

于 2012-05-23T18:09:20.900 に答える
0

ボブの優れた答えに加えて、次のこともできます。

 DATA zzz; 
 input prop $15. state $; 
  do i = 1 to countw( prop, "|" );
   propn = scan( prop, i, '|' );
   output;
  end;
 datalines;
 101|102|103|224  CA
 104|105|106      CA
 107|108|109      FL
 110|111|112|989  FL
 ; 
 run;
于 2012-08-24T16:38:00.407 に答える