全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1859 0
2017-12-22
代码:
%macro group_by_uni_score (raw_data=,res_data=,group_by=,group=);

%let interval=%eval(100/&group.);

proc sort data=&raw_data.;by &group_by.;run;

proc univariate data=&raw_data.(keep=&group_by.) noprint;
        var &group_by.;
        output out=t pctlpre=p_ pctlpts=0 to 100 by &interval.;
run;

proc transpose data=t out=tt;run;

data _null_;
        set tt;
        call symput(_name_,col1);
run;

data &res_data;
        set &raw_data.;
                %do group_id=1 %to &group;
                        %let p_end=%eval(&interval.*&group_id);
                        %if &group_id=1 %then %do;
                                if &group_by<&&p_&p_end. then group=&group_id;
                        %end;
                        %if &group_id.<&group. %then %do;
                                else if &group_by<&&p_&p_end. then group=&group_id;
                        %end;
                        %else %do;
                                else group=&group_id;
                        %end;
                %end;
run;
%mend;
%group_by_uni_score(raw_data=sashelp.class,res_data=calss,group_by=age,group=4);

本段代码主要功能是按照4分位数对样本进行分组。
其中,对代码中跨条件使用if else条件非常困惑,有大神帮忙分析下其运行逻辑吗?


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群