作者tew (咖啡王子)
站内Statistics
标题Re: [程式] sas资料选取问题
时间Thu Jun 24 15:16:47 2010
这问题如果是这样 挺好玩的
底下的语法 是我个人的解法
你可以参考看看
data test;input comp_id date yymmdd8. a;
format date yymmddn8.;
cards;
4212 20090415 0.15
3232 20090416 1.23
1101 20090417 2.33
9232 20090418 1.66
8422 20090512 2.36
1102 20090612 1.42
6473 20090613 2.42
;
run;
proc sql;
create table a
as select a.comp_id, b.date
from test a, test b
where a.date>=b.date and
(a.comp_id=1101 or a.comp_id=1102)
order by comp_id,date;
quit;
※ 引述《tew (咖啡王子)》之铭言:
: : data test;input comp_id date yymmdd8. a;
: : format date yymmddn8.;
: : cards;
: : 4212 20090415 0.15
: 1101 20090415 0.14
: : 3232 20090416 1.23
: 1101 20090416 1.12
: : 1101 20090417 2.33
: 1101 20090418 1.66
: : 9232 20090418 1.66
: : 8422 20090512 2.36
: 1101 20090512 2.33
: : 1102 20090612 1.42
: : 6473 20090613 2.42
: : ;
: : run;
: 如果资料形式是这样
: 下面的巨集如何抓出
: 1101 20090417以前的资料
: 我找不出您考量这部分的语法之处
: 当然 最主要是 我弄不懂原问者的问题
: 你可以再试试看
: : %macro date(comp_id=,n=);
: : data _null_;set test(where=(comp_id in (&comp_id.)));
: : call symput('date',date);run;
: : data test&n.;set test(keep=date);comp_id=&comp_id.;if date <= &date.;run;
: : %mend;
: : %date(comp_id=1101,n=1);
: : %date(comp_id=1102,n=2);
: : data test;set test1 test2;
: : proc sort data=test;by comp_id date;run;
: : comp_id就是公司名,n=1表示产生test1这个资料,内容是comp_id=1101时日期小於
: : 20090417的结果
: : 最後的test合并test1 test2就是你想要的资料
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 134.208.29.183
1F:推 imaltar:感谢~~我对SQL的用法还不是很善用阿XD~~ 06/24 15:23
2F:→ richubby:哈 我们很多都还没学过耶@@" 谢谢热心的t高手!!!^^ 06/24 21:00