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

熱線電話:13121318867

登錄
首頁精彩閱讀通過IMPORT過程讀取外部文件數(shù)據(jù)
通過IMPORT過程讀取外部文件數(shù)據(jù)
2017-03-30
收藏

通過IMPORT過程讀取外部文件數(shù)據(jù)

通過IMPORT過程讀取外部文件數(shù)據(jù)

除了可以通過DATA步讀取外部文本文件數(shù)據(jù)外,SAS還提供了IMPORT過程,通過它可以從外部數(shù)據(jù)源讀取數(shù)據(jù)并寫入到SAS數(shù)據(jù)集中。而且,如果使用SAS/ACCESS to PC Files,IMPORT過程除了可以導(dǎo)入帶分隔符的文件外,還可以讀取PC文件中的外部數(shù)據(jù),包括Microsoft Access數(shù)據(jù)庫文件、Miscrosft Excel工作薄、Lotus 1-2-3文件、dBase文件、JMP文件、SPSS文件、Stata文件、Paradox等。SAS變量的定義根據(jù)輸入記錄確定。

在SAS窗口環(huán)境選擇菜單文件=>導(dǎo)入數(shù)據(jù)可以打開導(dǎo)入窗口,通過導(dǎo)入向?qū)Э勺x取上述類型的數(shù)據(jù)。導(dǎo)入過程所生成的SAS語句也可以保存起來供以后使用。

對(duì)應(yīng)于IMPORT過程和SAS窗口環(huán)境的IMPORT向?qū)?,SAS還提供了EXPORT過程和EXPORT向?qū)Вㄟx擇菜單文件=>導(dǎo)出數(shù)據(jù)),以便將SAS數(shù)據(jù)集中的數(shù)據(jù)導(dǎo)出到上述類型的文件。對(duì)此這里不做講解,有興趣的讀者可以通過SAS幫助文檔學(xué)習(xí)。

IMPORT過程的導(dǎo)入數(shù)據(jù)的基本形式如下:

PROC IMPORT

DATAFILE=文件名|文件引用 | DATATABLE=表名

DBMS=數(shù)據(jù)源標(biāo)識(shí)符

OUT=數(shù)據(jù)集名稱;

RUN;

在上述形式中:

DATAFILE=指定輸入文件的完整路徑和文件名,或文件引用。文件引用通常通過FILENAME語句指定。


下面給出了幾個(gè)例子,分別講解通過IMPORT過程導(dǎo)入CSV文件、Microsoft Excel工作薄和Microsoft Access數(shù)據(jù)庫文件中的數(shù)據(jù)。

讀取CSV文件

外部文件contact.csv的內(nèi)容如下,文件第一行給出了各個(gè)數(shù)據(jù)行中數(shù)據(jù)值字段的名稱,后面的各行則為對(duì)應(yīng)的字段值。

Name,Age,Position,Marriage,Address

Greg William,42,Manager,Single,"14 Bridge St. San Francisco, CA"

Emily Cooker,33,Sales,Married,"42 Rue Marston"

Henry Cooper,,Office,Married,"52 Rue Marston Paris"

Jimmy Cruze,34,Manager,Single,"Box 100 Cary, NC"

使用IMPORT過程導(dǎo)入該文件的代碼如下:

proc import out=saslib.contact

datafile="c:\sas\data\contact.csv"

dbms=csv replace;

getnames=yes;

datarow=2;

run;

proc print data=saslib.contact noobs;

run;

所生成的數(shù)據(jù)集為saslib邏輯庫中的contact數(shù)據(jù)集,數(shù)據(jù)文件為c:\sas\data\contact.csv,選項(xiàng)DBMS=指定數(shù)據(jù)庫類型為csv。其中文件擴(kuò)展名可以省略,SAS會(huì)根據(jù)DBMS=選項(xiàng)指定的據(jù)庫類型自行加上。

代碼中還使用了REPLACE選項(xiàng),表示當(dāng)OUT=指定的數(shù)據(jù)集存在時(shí)覆蓋該數(shù)據(jù)集。GETNAMES語句表示是否從該文件中的第一行讀取變量值,默認(rèn)為YES,表示讀取。值為NO表示不讀取,這時(shí)IMPORT過程會(huì)自動(dòng)產(chǎn)生名為F1、F2、F3的變量等。

DATAROW=語句也會(huì)經(jīng)常使用,用于指定IMPORT語句開始讀數(shù)據(jù)的行號(hào)。默認(rèn)情況下,當(dāng)GETNAMES=NO時(shí),DATAROW=1,當(dāng)GETNAMES=NO時(shí),DATAROW=2。該選項(xiàng)可用于跳過數(shù)據(jù)文件開始處的多行內(nèi)容。

PRINT過程打印的數(shù)據(jù)集內(nèi)容如圖2.47所示。

圖2.47 PRINT過程打印的數(shù)據(jù)集

讀取 Microsoft Excel 工作薄

IMPORT過程可以導(dǎo)入Microsoft Excel工作薄中的數(shù)據(jù)。在Excel 2007中文件的工作薄pag的內(nèi)容如圖4.28所示。在該圖中,共包含了A~E五列,第一行為字段名稱,從第二行開始為數(shù)據(jù)值。

圖2.48 工作薄pag的內(nèi)容

下面使用IMPORT過程讀入該工作薄的指定區(qū)域。

proc import out=saslib.contact

datafile="c:\sas\data\contact.xlsx"

dbms=xlsx replace;

range="pag$A1:E5"n;

run;

proc print data=saslib.contact noobs;

run;

IMPORT過程中可以使用RANGE=語句指定所導(dǎo)入的區(qū)域。在使用IMPORT過程處理工作薄的數(shù)據(jù)之前,可先通過Microsoft Excel的“名稱管理器”定義要處理的數(shù)據(jù)的區(qū)域,在IMPORT過程中,使用RANGE=語句指定該數(shù)據(jù)區(qū)域的名稱,或直接在RANGE=語句中指定數(shù)據(jù)區(qū)域。本例中為直接指定,區(qū)域?yàn)楣ぷ鞅閜ag的從A1到E5的矩形區(qū)域。PRINT過程打印的數(shù)據(jù)集的內(nèi)容如圖2.49所示。

圖2.49

注意:

1) DBMS=XLSX可以處理Microsoft Excel 2007或Microsoft Excel 2010的工作薄。對(duì)于其他更早版本的Microsoft Excel生成的工作薄,需使用其他類型,例如XLS、EXCEL4、EXCEL5。

2) 還可使用EXCEL數(shù)據(jù)庫類型EXELCS并通過SAS PC文件服務(wù)器來讀取相應(yīng)版本的Excel工作薄。

3) 也可以直接使用LIBNAME語句通過SAS/ACCESS EXCEL引擎來訪問Excel工作薄。

具體請(qǐng)參考SAS幫助文檔。

通過DBMS=XLS或DBMS=XLSX來讀取Excel文件中的數(shù)據(jù)還有一個(gè)好處,即可以直接在UNIX環(huán)境下讀取Excel工作薄中的數(shù)據(jù),不需要訪問PC文件服務(wù)器。

讀取 Microsoft Access 數(shù)據(jù)庫文件

Microsoft Access是一個(gè)桌面關(guān)系型數(shù)據(jù)庫系統(tǒng),通常使用Microsoft ACE引擎(.accdb文件格式)或Microsoft Jet引擎(.mdb文件格式)。在IMPORT過程中指定DBMS為ACCESS,SAS可以讀取在Microsoft Access 97、Microsoft Access 2000、Microsoft Access 2003、Microsoft Access 2007和Microsoft Access 2010中的文件。例如:

proc import out=saslib.customer

datatable="customer"

dbms=access replace;

database="c:\sas\data\customer.accdb";

RUN;

在IMPORT過程中使用access數(shù)據(jù)庫類型,實(shí)際使用的是SAS/ACCESS LIBNAME引擎。也可以直接使用LIBNAME語句通過SAS/ACCESS ACCESS引擎來訪問Microsoft Access數(shù)據(jù)庫文件。

DATATABLE=指定輸入DBMS表名。數(shù)據(jù)源可以通過DATAFILE或DATATABLE指定。

DBMS=指定要導(dǎo)入的數(shù)據(jù)類型。SAS支持多種數(shù)據(jù)類型,例如CSV、TAB、ACCESS、XLSX、XLS、EXCEL、JMP、DTA、SPASS等。其中CSV、TAB表示要導(dǎo)入的數(shù)據(jù)文件分別由逗號(hào)和tab符號(hào)分隔、ACCESS表示使用LIBNAME語句的Miscrosoft Access 表、XLSX表示Micorsoft Excel 2007或2010的工作薄,等等??蓞⒖糞AS幫助文檔關(guān)于導(dǎo)入數(shù)據(jù)類型和各類型的詳細(xì)信息。

OUT=指定輸出的數(shù)據(jù)集名稱。該語句后面還可以添加數(shù)據(jù)集選項(xiàng)。


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

若不方便掃碼,搜微信號(hào):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)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }