如何解决SAS如何根据字符串将观察结果分成多行?
这是我的问题。
我得到了以下数据集
obs ID p1 p2 p3 p4 perc
1 120265 . . . 25 a t 90%,b r 10%
2 120267 15 15 15 15 c e 80%,a 20%
3 120269 20 20 20 20 cc
我想用这种方式将其标准化
obs ID p1 p2 p3 p4 perc
1 120265 . . . 25 a t 90%
2 120265 . . . 25 b r 10%
3 120267 15 15 15 15 c e 80%
4 120267 15 15 15 15 a 20%
5 120269 20 20 20 20 cc
我很高兴听到一些建议! 我可以在多列中执行,但是我不知道如何标准化数据! 我很高兴收到一些提示。
解决方法
我已经有一段时间没有使用SAS编码了,但这似乎可以正常工作:
data have;
length ID $8 p1 $2 p2 $2 p3 $2 p4 $2 list $100;
infile cards dsd dlm='|' truncover;
input ID p1 p2 p3 p4 list;
cards;
120265|.|.|.|25|a t 90%,b r 10%
120267|15|15|15|15|c e 80%,a 20%
120269|20|20|20|20|cc
;
data col2rows;
set have;
length perc $10;
do i=1 by 1 until (perc=' ');
perc=strip(scan(list,i,','));
if perc ne ' ' then
output;
end;
run;
data want;
set col2rows (drop=list i);
run;
哪个会按预期打印:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。