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

熱線電話:13121318867

登錄
首頁精彩閱讀sas基礎_sas知識_sas基礎知識(9)_數據分析師
sas基礎_sas知識_sas基礎知識(9)_數據分析師
2015-01-23
收藏

sas基礎_sas知識_sas基礎知識(9)_數據分析師


在一個 SAS 程序中,你可以根據需要引用宏變量任意次, 在你改變它之前它的值一直保 持 不變。下面的程序就引用了 DSN 兩次。 DATA temp; SET &dsn; IF age>=20;PROC PRINT; TITLE "Subset of Data Set &dsn"; RUN; 每次&dsn 一出現,宏處理器就用 Newdata 代替它,SAS 實際執(zhí)行的語句是∶ DATA TEMP; SET NEWDATA; IF AGE>=20; PROC PRINT; TITLE "Subset of Data Set Newdata"; RUN; 你也可以創(chuàng)建一個包含 SAS 語句的宏變量,如: %LET plot=%str( 這種情況下,宏變量的值都作為函數%STR 的實參, 于 是分 PROC PLOT; PLOT income*age; 可 RUN; 以賦空值,如: ) %LET dsn=Nextdata; %LET plot=; 第 1 個語句對 DSN 重新賦值 Nextdata,第 2 個語句對 PLOT 賦空值。 宏變量也可以嵌套 引用: %LET dsn=Olddata; %LET yvar=Income; %LET xvar=Age; %LET plot=%str( PROC PLOT; PLOT &yvar*&xvar; RUN; ) (程序的第 1 部分) SAS 實際執(zhí)行的是如下的語句: DATA temp; SET &dsn; IF age>=20; &plot PROC PRINT; TITLE "Subset of Data Set &dsn"; RUN; (程序的第 2 部分) 號成為宏變量值的一部分,而不會被當做%LET 語句的結束。 要改變宏變量的值,只需用%LET 語句重定義, 宏變量也DATA TEMP; SET OLDDATA; IF AGE>=20; PROC PLOT; PLOT YVAR*XVAR; RUN; PORC PRINT; TITLE "Subset of Data Set Olddata"; RUN; 2. 宏 宏就是存貯的一個文本,最簡單的宏工作起來很像一個宏變量,但是復雜的宏可以做許 多 宏變量無法完成的事。下面是一個最簡單的宏定義。 %MACRO dsn; Newdata %MEND dsn; 宏定義總是由%MACRO 語句開始, 而且必須包含一個宏名。宏名遵從一般的 SAS 命名 規(guī)則, 這里的宏名叫 DSN。Newdata 是宏的內容, %MEND 作為宏定義的結束語句;這里 的 %MEND 語句為 了清晰還重復了宏名。要調用一個宏,只需放一個百分號(%)在宏名的前面,如: TITLE "Display of Data Set %dsn"; 宏處理器執(zhí)行宏展開,用宏內容去代替%dsn,TITLE 語句成為: TITLE "Display of Data Set Newdata"; 同樣,標題必須用雙引號括起來。 一個 SAS 程序可以包含多個宏,一個宏也可以被多次調用,要改變一個象 DSN 這樣簡單 的宏 的內容,只需重新定義宏,對簡單的文本代換,用宏變量比定義一個宏效率要高,但是當任 務比

較復雜的時侯,宏救宏變量要優(yōu)越得多了。 下面的程序創(chuàng)建一個包含整段 SAS 程序的宏。 %MACRO plot; PROC PLOT; 以

后調用宏如下: PLOT income*age; RUN; %MEND plot; SAS 實際執(zhí)行的語句是:

DATA temp; DATA TEMP; SET olddata; SET OLDDATA; IF age>=20; IF AGE>=20; %plot PROC PLOT; PROC PRINT; PLOT INCOME*AGE; RUN; RUN; PROC PRINT; RUN; 假設在 PROC PLOT 中的繪圖變量可以改變,你就可以用宏變量引用去替換 PLOT 語句中 的變 量名,然后在調用宏之前用%LET 語句給宏變量賦值。 %MACRO plot; SAS 實際執(zhí)行的是如下的語句: PROC PLOT; DATA TEMP; PLOT &yvar*&xvar; SET OLDDATA; RUN; IF AGE>=20; %MEND plot; PROC PLOT; DATA temp; PLOT INCOME*AGE; SET olddata; RUN; IF age>=20; PROC PLOT; %LET yvar=income; PLOT INCOME*YRS_EDUC; %LET xvar=age; RUN; %plot PROC PRINT; %LET xvar=yrs_educ; RUN; %plot PROC RRINT; RUN; 宏變量和宏結合起來使用,為靈活設計提供了極大的方便。

數據分析咨詢請掃描二維碼

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

數據分析師資訊
更多

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(), // 加隨機數防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數1:配置參數 // 參數2:回調,回調的第一個參數驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產品形式,包括:float,popup width: "280px", https: true // 更多配置參數說明請參見: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); }