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

有很多方法可以做到这一点;这是一个:

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 回答