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

熱線電話:13121318867

登錄
首頁精彩閱讀SAS的數(shù)據(jù)導(dǎo)入導(dǎo)出大法
SAS的數(shù)據(jù)導(dǎo)入導(dǎo)出大法
2017-07-06
收藏

SAS的數(shù)據(jù)導(dǎo)入導(dǎo)出大法

正所謂巧婦難為無米之炊,數(shù)據(jù)分析首要的問題是數(shù)據(jù)的獲取。 SAS 作為老牌的統(tǒng)計(jì)軟件發(fā)展至今,已經(jīng)集成了豐富的數(shù)據(jù)獲取與管理功能組件。本章我們就SAS如何獲取數(shù)據(jù)做重點(diǎn)介紹,并順帶介紹 SAS 如何導(dǎo)出數(shù)據(jù)文件。

3.1 讀取對象與讀取方式

說到數(shù)據(jù)讀取這個問題,我們可以從 SAS 讀取的對象來說 , 當(dāng)然也可以從讀取的方式來說。從 SAS 讀取的對象來說,我們可以把外部數(shù)據(jù)文件歸為四類。
(1)數(shù)據(jù)庫管理系統(tǒng)(Data Base Management System, DBMS)數(shù)據(jù)文件,市面的DBMS 非常之多,常見的如 DB2、 Sybase、 mySQL、 MS SQL Server、 Oracle、 Teradata 以及 Hadoop 等。
(2)單機(jī)文件(PC file),單機(jī)文件應(yīng)是相對 DBMS 數(shù)據(jù)文件而言的,常見的單機(jī)數(shù)據(jù)文件包括 MS Access、 MS Excel、 Lotus、 DBF 以及大家更熟悉的 JMP、 SPSS、Stata、 Paradox 等軟件的數(shù)據(jù)文件。
(3)平面文件(Flat file),這是一種記錄間沒有結(jié)構(gòu)關(guān)系的文件,一個 Flat file 既可以是純文本文件 (Plain text file),也可以是二進(jìn)制文件 (Binary file),對于我們而言,最常見的是純文本 TXT 文件和 CSV 文件。
(4)流式數(shù)據(jù)(Instream data),即 SAS 程序中 DATA步里 DATALINES語句后的數(shù)據(jù)行。

從 SAS 讀取的方式來說,筆者總結(jié)為 7 類(更準(zhǔn)確地講,應(yīng)該是 SAS 和外部數(shù)據(jù)交互的方式,因?yàn)椴粌H僅讀入,還有導(dǎo)出等其他交互操作)

(1) LIBNAME 語句, LINAME 語句其實(shí)是動用了我們前面提到的數(shù)據(jù)庫引擎來實(shí)現(xiàn) SAS 與其他數(shù)據(jù)庫文件的互通,這是 SAS 獲取外部數(shù)據(jù)庫文件最為快速、直接的方式。
(2) SQL 直通設(shè)施(SQL pass-through facility),這是直接在 SAS 會話中使用其原生 SQL 語法的方式。
(3) ACCESS/DBLOAD 過程,這是間接訪問外部數(shù)據(jù)庫數(shù)據(jù)文件的方式,不過 SAS已不再推薦。
(4) IMPORT/EXPORT 過程,前面的三種方式都是包含在 SAS/ACCESS 模塊中的, IMPORT/EXPORT 過程則是 Base SAS 與外部數(shù)據(jù)集溝通的方式,當(dāng)然我們在利用IMPORT/EXPORT 過程時,如果安裝且擁有 SAS/ACCESS 模塊的權(quán)限,能夠支持的數(shù)據(jù)類型會更豐富。
(5) INFILE+INPUT 語句,這是通過 DATA 步編程的方式讀取外部數(shù)據(jù)或者流式數(shù)據(jù)。
(6) INPUT+DATALINES 語句,這是通過 DATA 步編程的方式讀取流式數(shù)據(jù)。
(7) IO 函數(shù),通過輸入輸出函數(shù)打開數(shù)據(jù)文件,這是一種比較少見的方式

3.2 數(shù)據(jù)讀取策略

在實(shí)際工作中,我們的思維模式通常是碰到一種數(shù)據(jù),然后思考采用何種方式讀入。因此,筆者將數(shù)據(jù)類型和讀入方式做一個綜合,從需求出發(fā)找解決方法,即從數(shù)據(jù)類型出發(fā),總結(jié)可用的讀入方式,并推薦合適的讀入方式。具體見表 3-1 的總結(jié)。


數(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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗(yàn)證碼的宕機(jī) 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){ //倒計(jì)時完成 $(".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); }