将字符变量值更改为新的观察值SAS

时间:2012-05-23 17:15:01

标签: sql input sas substr

我有一个与此类似的数据集:

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中的新行时,我总是感到困惑。

2 个答案:

答案 0 :(得分: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; 

当然,这是基于您描述的数据。我对你想要保留的变量的长度做了一个假设。

答案 1 :(得分: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;