目的,将样本分为2个组(体重>=100排前面叫A组,体重<100排后面叫B组),AB组再按照年龄排序。
分后的数据应该:
[code:a532b]proc sql noprint;
create table WORK.CLASS1 as select * from SASHELP.CLASS where WEIGHT>=100;
create table WORK.CLASS2 as select * from SASHELP.CLASS where WEIGHT<100;
quit;
proc sort data=WORK.CLASS1; by DESCENDING AGE; run;
proc sort data=WORK.CLASS2; by DESCENDING AGE; run;
data WORK.CLASS; set WORK.CLASS1 WORK.CLASS2; run;
proc sql noprint;
drop table WORK.CLASS1;
drop table WORK.CLASS2;
quit;[/code:a532b]
而我觉得上面那段写的太烂了,想想有没有更高效的。
但是下面的程序始终有语法错误,我觉得逻辑对了。
[code:a532b]proc sql noprint;
create table WORK.CLASS like SASHELP.CLASS;
insert into WORK.CLASS select * from (select * from SASHELP.CLASS where WEIGHT>=100 order by DESCENDING AGE);
insert into WORK.CLASS select * from (select * from SASHELP.CLASS where WEIGHT<100 order by DESCENDING AGE);
quit;[/code:a532b]
请大家帮我看看。
[code:1e450]
proc sql ;
create table WORK.CLASS as
select * from SASHELP.CLASS where WEIGHT>=112
union
select * from SASHELP.CLASS where WEIGHT<112
order by age desc;
quit;[/code:1e450]
[quote="willon":16a85][code:16a85]
proc sql ;
create table WORK.CLASS as
select * from SASHELP.CLASS where WEIGHT>=112
union
select * from SASHELP.CLASS where WEIGHT<112
order by age desc;
quit;[/code:16a85][/quote:16a85]
程序会不会只对后面一个SQL排序?即只对WEIGHT<112 排序.
你既然加了一个hehe字段,何不简单明了一点:
data tmp;
set sashelp.class ;
if weight >=100 then flag=1;
else flag=2;
run;
proc sort data=tmp;
by flag descending age;
run;