登录
首页精彩阅读sas信用评分卡之番外哑变量的生成
sas信用评分卡之番外哑变量的生成
2017-07-06
收藏

sas信用评分卡之番外哑变量的生成

哑变量是:举一个例子,假设变量“职业”的取值分别为:工人、农民、学生、企业职员、其他,5种选项,我们可以增加4个哑变量来代替“职业”这个变量,分别为D1(1=工人/0=非工人)、D2(1=农民/0=非农民)、D3(1=学生/0=非学生)、D4(1=企业职员/0=非企业职员),最后一个选项“其他”的信息已经包含在这4个变量中了,所以不需要再增加一个D5(1=其他/0=非其他)了。这个过程就是引入哑变量的过程,其实在结合分析中,就是利用哑变量来分析各个属性的效用值的。以上这段话是我在博客那边粘过来的,是个粉丝都知道我的画风不是这种。

今天介绍的就是哑变量啦。其实我个人是不爱用哑变量的,对于一些可以解释得过的变量还可以,就是怕衍生出来的变量你都不敢用,你知道吧。譬如吧,职业的变量,是不是工人的变量,然后你要是弄完模型,说是工人的加分,不是工人的反而是减分,那你在宣讲的时候,你要这么讲出来,人家产品怎么看你这个模型,你这会来解释什么工人信用比较好都没什么用了。这是一个不恰当的比喻哈,毕竟众生平等嘛。今天的代码我没在我的工作中用过,因为本身我的基层变量已经很多,除非我走投无路,不然我不会一次性生成这么多哑变量。因为生成评分卡那个代码我的粉丝疯涨,我好怕粉丝后面发现我就是个弱鸡。


%macropub_gg(data,id,var,out);

proc sort data=&data.(where=(&var.^='')) out=data1(keep=&id.&var.) nodupkey; by &var.;

run;

data &out.;

set &data.;

keep appl_id &var.;

run;

data data1_1;

set data1(keep=&var.);

prefix_&var.=compress("&var."||&var.);

run;

run;

data _null_;

set data1_1;

call symput (compress("var"||left(_n_)),compress(prefix_&var.));

call symput(compress("n"),compress(_n_));

run;

%put&var1.  &var2.;

%doi=1%to&n.;

data data2;

set RONG_ZX_1

if &var.="&&var&i."then &&var&i.=1;

else &&var&i.=0;

keep &id.&&var&i.;

run;

proc sort data=data2; by &id.;run;

proc sort data=&out.; by &id.;run;

data &out.;

merge &out.(in=a) data2(in=b);

by &id.;

if a;

run;

%end;

%mend;

pub_gg(data=,id=, var=,out=);

pub_gg(data=,id=, var=,out=);

data:填入你的原始数据集

id:填入数据的主键

var:填入你要变成哑变量的主变量。

Out:输出数据集

结果数据集:



D3

数据分析咨询请扫描二维码

客服在线
立即咨询