作者tew (咖啡王子)
站内Statistics
标题Re: [程式] SAS 直转横 proc transpose
时间Sat Sep 4 11:02:16 2010
我看了一下
你们的作法是考虑只有重复出现2次的情况
但是针对出现很多次 可能会有点麻烦
所以我简单写一下巨集
因为在外面用电脑 直接在BBS上写 可能会有点错误 请见谅
data a;format in_date $20. out_date $20. start $20.;
input id no $ in_date $ out_date $ start $;
cards;
10011576 0032 2009/9/26 2009/10/8 .
10019076 0053 2009/7/7 2009/7/18 .
10034358 0004 2009/9/22 2009/9/22 2009/10/20
10034358 0005 2009/9/22 2009/11/10 2009/10/21
;
run;
proc sort data=a;by id in_date;
run;
data a;
set a;by id;
retain a 0;
a=a+1;
if first.id then a=1;
/*此处修正*/
run;
proc means noprint data=a;
var a;
output out=b(drop=_type_ _freq_) max=a;
run;
data _null_;
set b;
call symput('n',a);
run;
%macro a;
%do i=1 %to &n;
data a&i;
set a;
no&i=no;
in_date&i=in_date;
out_date&i=out_date;
start&i=start;
if a=&i then output;
keep id no&i in_date&i out_date&i start&i;
run;
%end;
data final;
merge
%do i=1 %to &n;
a&i
%end;
;by id;
run;
%mend;
%a;
以上语法 应该可以处理id出现2次以上的情况
你可以参考看看
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.129.9.83
※ 编辑: tew 来自: 220.129.9.83 (09/04 11:08)
1F:推 socery:删除if first.id then id=1; 09/04 12:01
※ 编辑: tew 来自: 220.129.9.225 (09/04 13:39)
2F:→ socery:朴 我还真没考虑到两次以上的状况=.= 09/04 18:08
3F:推 wlsherica:(笔记) 感谢您 09/04 18:41