99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀sas批量刪除重復(fù)超過90%的變量
sas批量刪除重復(fù)超過90%的變量
2017-04-19
收藏

sas批量刪除重復(fù)超過90%的變量

22年前的今天我的媽咪把我?guī)磉@個世界,費盡心思把我養(yǎng)到這么大,我就是4月份出生的大白羊,我的生日愿望呢,就是想有個大神在留言板塊教我一個怎么識別組合變量更好解釋因變量的方法,譬如我怎么知道年齡和婚姻兩個變量在一起的效果比單個的效果還要好,但是年齡和性別組合效果并沒有那么好。跪求大神實現(xiàn)我的生日愿望吧。

今天還是沒有要更新信用評分的內(nèi)容,更新的內(nèi)容是關(guān)于變量處理中的問題,之前的文章中有過變量處理的章節(jié),這篇文章是對那篇的補充,之前講過我會把缺失值達到70%的變量刪掉。我漏掉一個問題就是變量的重復(fù)值達到90%也應(yīng)該刪掉,譬如一個變量有5中情況:ABCDE,但是A的情況的占比就達到90%的時候,除非這個變量剩下的10%全部都是逾期的,不然這樣的變量是沒有意義,所以今天分享的代碼就是批量找出這些變量并在原數(shù)據(jù)集中刪掉。這次的代碼也是陳先生提供的。我在陳先生代碼的基礎(chǔ)上做了一些改動并調(diào)試了。

話不多說,上代碼:

%macrovar_namelist(data=,tarvar=,dsor=);

%letlib=%upcase(%scan(&data.,1,'.'));

%letdname=%upcase(%scan(&data.,2,'.'));

%globalvar_list var_num;

proc sql ;

create table &dsor.as

select name

from sashelp.VCOLUMN

where left(libname)="&lib."and left(memname)="&dname."and lowcase(name)^=lowcase("&tarvar.");

quit;

%mend;

%macrotest(data,tarvar,data_result,data_drop,rate);

proc datasets lib=work;

delete base;

run;

data base;

length variable$100.;

run;

%var_namelist(data=&data.,/*coltype=num,*/tarvar=&tarvar.,dsor=aa);

data _null_;

set aa;

call symput(compress("var"||left(_n_)),compress(name));

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

run;

%put&n.;

%doi=1%to&n.;

%put&&var&i.;

proc freq data=&data.(keep=&&var&i.) noprint;

tables &&var&i./out=PERCENT_&&var&i.;

/*(keep=PERCENT)*/

run;

proc sql;

select max(PERCENT) into: max_percent from

PERCENT_&&var&i.;

quit;

%if&max_percent>&rate.%then%do;

data next;

variable="&&var&i.";

run;

proc append base=base data=next force;

run;

%end;

proc datasets lib=work noprint;

delete PERCENT_&&var&i.;

run;

%end;

data base;

set base(where=(variable^=''));

run;

proc transpose data=base out=base1(drop=_name_);

id variable;

run;

/*這步是刪除單一變量超過90的重復(fù)值的缺失值的可以按照這個寫下*/

proc sql noprint;

select name into :var_list separated by' '

from sashelp.VCOLUMN

where upcase(left(libname))="WORK"and UPCASE(left(memname))="BASE1";

quit;

%PUT&var_num1.;

data &data_result.;

set &data.;

drop &var_list.;

run;

data &data_drop.;

set &data.;

keep &tarvar.&var_list.;

run;

%mend;

第一宏不用管,那是為了嵌套在第二個宏里面的。那么接下來介紹下這個宏怎么用。

test(data,tarvar,data_result,data_drop,rate);

data:填入的原數(shù)據(jù)集。

Tarvar:填入你不想要統(tǒng)計的變量。可以是你的主鍵也可以是你的因變量,隨便你。像我填入的是因變量。

data_result:結(jié)果數(shù)據(jù)集,你的結(jié)果數(shù)據(jù)想叫什么就填什么把。

Data_drop:刪掉的變量存放的數(shù)據(jù)集,給你檢查一下有沒有錯刪變量。

Rate:填入的是你覺得重復(fù)值達到多少的時候就刪掉。我建議的80-90。

下周分享的一個變量人工分段的一個代碼。這個代碼是我當(dāng)下除了最優(yōu)分段之外覺得好用的代碼,因為最優(yōu)分段需要做異常值的檢查。有時候異常值檢查不好,容易分組的分的不好。這是我個人的經(jīng)驗哈,對于變量分段我之前很崇尚自動分組,我覺得那么多的變量,我一個一個的去細看這無非浪費我的時間,但是我失敗的經(jīng)驗告訴我,模型的過程每一步的都應(yīng)該細致并且仔細,該人工的時候還是要人工,如果全部可以全自動化,那么只要自動運行代碼就可以了,誰都可以建模了。


PCA

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }