a****a 发帖数: 3411 | 1 新手问一个宏的问题
我想根据continuous variable的percentile value做一个categorical variable,比
方说有100个categories的categorical variable。
如果分组很多,输入不方便,修改一次变量名累也累死。
如何修改下面这个宏,能够实现划分任意多的category?
多谢 (包子不多2个)
%macro quint(dsn,var,quintvar);
proc univariate noprint data=&dsn;
var &var;
output out=quintile pctlpts=25,50,75,100 pctlpre=pct;
run;
data _null_;
set quintile;
call symput('q1',pct25) ;
call symput('q2',pct50) ;
call symput('q3',pct75) ;
call symput('q4',pct100) ;
run;
data &dsn;
set &dsn;
if &var =. then &quintvar = .;
else if &var le &q1 then &quintvar=1;
else if &var le &q2 then &quintvar=2;
else if &var le &q3 then &quintvar=3;
else if &var le &q4 then &quintvar=4;
else &quintvar=5;
run;
%mend quint; | a*****3 发帖数: 601 | 2 楼主能不能把格式改成0行距之类。 看了半天累得要死 还不知有木有包子。 | a****a 发帖数: 3411 | 3 多谢提醒 已经修改
有包子:)
【在 a*****3 的大作中提到】 : 楼主能不能把格式改成0行距之类。 看了半天累得要死 还不知有木有包子。
| D******n 发帖数: 2836 | | a*****3 发帖数: 601 | 5 我想再原来的代码上改,先不用proc rank。问题是如何用宏生成10,20,30,40,50,60,
70,80,90,100? 这样可以放到univariate里面去。谁给个提示?
【在 D******n 的大作中提到】 : proc rank
|
|