我有一个与此类似的数据集:
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中的新行时,我总是感到困惑。
答案 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;