sas數(shù)據(jù)導(dǎo)入終極匯總-之一_第1頁
sas數(shù)據(jù)導(dǎo)入終極匯總-之一_第2頁
sas數(shù)據(jù)導(dǎo)入終極匯總-之一_第3頁
sas數(shù)據(jù)導(dǎo)入終極匯總-之一_第4頁
sas數(shù)據(jù)導(dǎo)入終極匯總-之一_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第第頁sas數(shù)據(jù)導(dǎo)入終極匯總-之一sas數(shù)據(jù)導(dǎo)?終極匯總-之?

將數(shù)據(jù)?件讀?SAS——DATAStep/PROCIMPORT

1.將SAS?件讀?SAS——

datasasur.saslin;

t"F:\sas1.sas7bdat";

run;

proccontentsdata=sasur.saslin;

run;

2.將其他形式?件導(dǎo)?成SAS——PROCIMPORT/直接讀?其他形式?件

procimportdatafile="c:\data\hsb2.sav"out=work.hsb2;

run;

proccontentsdata=hsb2;

run;

SAS導(dǎo)?數(shù)據(jù):SASrecognizesthefiletypetobeimportedbyfileextension.

對數(shù)據(jù)長度的限制

在?些操作環(huán)境,SAS假定外部?件的紀(jì)錄對最長為256(??數(shù)據(jù)包括空格等所有字符在內(nèi)的長度),如果預(yù)計讀?的紀(jì)錄長度超過256,可在Infile語句中使?LRECL=n這個命令。

讀?以空格作為分隔符的原始數(shù)據(jù)

如果原始數(shù)據(jù)的不同變量之間是以?少?個空格作為分隔符的,那可以直接采?List?法將這些數(shù)據(jù)讀?SAS。

ListInput讀數(shù)據(jù)?常?便,但也有很多局限性:

(1)不能跳過數(shù)據(jù);

(2)所有的缺失值必須以點(diǎn)代替

(3)字符型數(shù)據(jù)必須是不包含空格的,且長度不能超過8;

(4)不能直接讀??期型等特殊類型的數(shù)據(jù)。

程序舉例:

INPUTName$AgeHeight;

讀?按列組織的數(shù)據(jù)

有些原始數(shù)據(jù)的變量之間沒有空格或其他分隔符,因此這樣的?件不能以List形式對?SAS。但若不同變量值的都在每條記錄的固定位置處,則可以按照Column形式讀?數(shù)據(jù)。Colunm讀數(shù)據(jù)?法要求所有的數(shù)據(jù)均為字符型或者標(biāo)準(zhǔn)的數(shù)值型(數(shù)值中僅包括數(shù)字,?數(shù)點(diǎn),正負(fù)號,或者是E,不包括逗號或?期型數(shù)據(jù))。

相對于List?法,Column讀數(shù)據(jù)?法有如下優(yōu)點(diǎn):

(1)變量值之間?需?空格分開;

(2)可以空格表?缺失值;

(3)字符型數(shù)據(jù)中可包括空格;

(4)可跳過數(shù)據(jù)。

程序舉例:

INPUTName$1-10Age11-13Height14-18;

使?格式命令讀??標(biāo)準(zhǔn)格式的數(shù)據(jù)

字符型數(shù)據(jù):$informatw.

數(shù)值型數(shù)據(jù):informatw.d

?期型數(shù)據(jù):Datew.

(1)字符型:

$CHARw.:不刪除前后空格,讀?字符數(shù)據(jù);

$HEXw.:將16進(jìn)制的數(shù)據(jù)轉(zhuǎn)化成字符數(shù)據(jù);

$w.:刪除前?空格,讀?字符數(shù)據(jù);

(2)?期,時間或?期時間型數(shù)據(jù)

DATEw.:以ddmmmyy或ddmmmyyyy形式讀??期;

DATETIMEw.:以ddmmmyyhh:mm:ss.ss形式讀??期時間;

DDMMYYw.:以ddmmyy或ddmmyyyy讀??期;

JULIANw.:以yyddd或yyyyddd讀?Julia?期;

MMDDYYw.:以mmddyy或mmddyyyy形式讀??期;

TIMEw.:以hh:mm:ss.ss形式讀?時間;

不可能的英文(3)數(shù)值型數(shù)據(jù)

COMMAw.d:讀?數(shù)值型數(shù)據(jù),將其中的逗號,$刪除,并將括號轉(zhuǎn)化為負(fù)號

HEXw.:將16進(jìn)制數(shù)據(jù)轉(zhuǎn)化成浮點(diǎn)型數(shù)據(jù)

IBw.d:讀?整數(shù)?進(jìn)制數(shù)據(jù);

PERCENTw.:將百分?jǐn)?shù)轉(zhuǎn)化為普通數(shù)據(jù);

w.d:讀?標(biāo)準(zhǔn)的數(shù)值型數(shù)據(jù)。

INPUTName$16.Age3.+1Type$1.+1DateMMDDYY10.

(Score1Score2Score3Score4Score5)(4.1);

多種輸?格式綜合

讀?位置控制——列指針

+n–n:控制列指針從當(dāng)前位置向前或向后移動n個字符;

@n:控制列指針指向

舉例:

INPUTParkName$1-22State$Year@40AcreageCOMMA9.;

讀?雜亂數(shù)據(jù)

在不確定從哪?列開始讀?數(shù)據(jù),但知道讀?的數(shù)據(jù)均位于某?特定字符或字符串之后時,可采?@’character’列指針。

如:有字符串如下,需讀?Breed:后?的字符串

MydogSamBreed:RottweilerVetBills:$478

(1)SAS語句:Input@’Breed:’DogBreed$;讀?內(nèi)容:Rottweil

讀?Breed:后?的字符串,賦給DogBreed,讀?時到空格時,?動結(jié)束。

(2)SAS語句:Input@’Breed:’DogBreed$20.;讀?內(nèi)容:RottweilerVetBill

讀?Breed:后?的字符串,賦給DogBreed,讀?字符串的長度為20。

(3)SAS語句:Input@’Breed:’DogBreed:$20.;讀?內(nèi)容:Rottweiler

讀?Breed:后?的字符串,賦給DogBreed,讀?字符串的長度為20,但遇到空格時不再繼續(xù)讀數(shù)據(jù)。

從原始數(shù)據(jù)中讀?多?數(shù)據(jù)作為SAS的?條觀測

使??指針:

‘/’——到下??讀數(shù)據(jù)

‘#n’——到第n?讀數(shù)據(jù)

INPUTCity$State$/NormalHighNormalLow#3RecordHighRecordLow;

從??原始數(shù)據(jù)中讀?多個觀測

在Input語句末尾使?@@標(biāo)?,告訴SAS繼續(xù)讀?本?后?的數(shù)據(jù)。

INPUTCity$State$NormalRainMeanDaysRain@@;

有選擇的讀?原始數(shù)據(jù)

SAS讓?戶?需讀?所有的原始數(shù)據(jù),然后再判斷是否是?戶所需要的數(shù)據(jù)。?戶僅需先讀??夠的變量,以判斷該條觀測是否為??所需,然后在INPUT語句后以@結(jié)尾,以使SAS讀數(shù)據(jù)的指針停在此處,保留此?數(shù)據(jù)。然后?戶使?IF語句判斷讀?的觀測是否為所需數(shù)據(jù),若是,則使?第?個IN

PUT語句繼續(xù)讀?其余數(shù)據(jù)。

INPUTType$@;

IFType=’surface’THENDELETE;

INPUTName$9-38AMTrafficPMTraffic;

@@@

(1)均為鎖定數(shù)據(jù)?的標(biāo)?;

(2)@標(biāo)?在SAS進(jìn)?下個循環(huán)之前就釋放鎖定的數(shù)據(jù)?,?@@標(biāo)?在繼續(xù)鎖定數(shù)據(jù)?

在INFILE語句中控制輸?的選項

(1)FIRSTOBS=n:從n條觀測開始讀?數(shù)據(jù)

(2)OBS=n讀?n條觀測

(3)當(dāng)讀進(jìn)內(nèi)存的觀測長度?于INPUT語句設(shè)定的長度時

當(dāng)SAS指針到達(dá)?條記錄的末尾,?在INPUT語句中尚有未讀?的變量時,SAS默認(rèn)繼續(xù)讀?下??數(shù)據(jù)。

MISSOVER:不讀?下??數(shù)據(jù),?將未賦值的變量以缺失值填充。

TRUNCOVER:當(dāng)使?column或格式化讀??式時,某些數(shù)據(jù)?長度?于其他數(shù)據(jù)?長度時,使?TRUNCOVER選項,可防?SAS讀?下??數(shù)據(jù)。

使?DATA步讀?分隔符?件

在INFILE語句中使?DLM=選項或者DSD選項可以讀?以特定符號作為分隔符的原始?件。

(1)TheDLM=option(i.e.DLM=’’)

如果是以Tab作為分隔符,則使?DLM=’09’X命令

師范大學(xué)英文(2)TheDSDoption:主要有三個功能

忽略單引號內(nèi)的分隔符;

不將引號作為數(shù)據(jù)讀?SAS;

將??內(nèi)連續(xù)兩個單引號作為?個缺失值處理。

sweater怎么讀使?IMPORT程序步讀?分隔符?件

IMPORT程序的功能

(1)?動掃描數(shù)據(jù)?件,并確定變量的類型(數(shù)值型或字符型);

(2)為字符型變量,?動設(shè)定變量的長度;

(3)識別?些?期型數(shù)據(jù);

(4)將兩個連續(xù)的分隔符作為?個缺失值讀?SAS

(5)讀?引號內(nèi)數(shù)據(jù)

(6)?動將原始數(shù)據(jù)中不存在的變量賦缺失值;

PROCIMPORTDATAFILE=’filename’OUT=data-t;

SAS根據(jù)讀??件的擴(kuò)展名確定?件的類型。若讀??件沒有正確的擴(kuò)展名,或者是DLM?件,?戶

必須在IMPORT程序步中使?DBMS=option選項。當(dāng)讀?數(shù)據(jù)集的名稱已經(jīng)存在于SAS庫中,可?REPLACE選項將原數(shù)據(jù)覆蓋。

PROCIMPORTDATAFILE=’filename’OUT=data-tDBMS=identifierREPLACE;

在默認(rèn)情況下,IMPORT程序步將第??數(shù)據(jù)作為變量的名稱。若第??數(shù)據(jù)并?變量名,可在IMPORT語句后使?GETNAMES=NO語句。

若IMPORT程序讀?的是分隔符?件,默認(rèn)分隔符為空格。若不是,則需使?DILIMITER=statement語句指定分隔符。

PROCIMPORTDATAFILE=’filename’OUT=data-t

DBMS=DLMREPLACE;

GETNAMES=NO;

sunnydaysDELIMITER=’delimiter-character’;

RUN;

使?IMPORT程序步讀?PC?件

PROCIMPORTDATAFILE=’filename’OUT=data-t

DBMS=identifierREPLACE;

列?SAS數(shù)據(jù)集的內(nèi)容

PROCCONTENTSDATA=data-t;

CONTENTS程序步的功能是顯?SAS對數(shù)據(jù)集的具體描述,主要內(nèi)容有:

(1)數(shù)據(jù)集描述

數(shù)據(jù)集的名稱;

觀測的數(shù)量;

變量的數(shù)量;

創(chuàng)建?期

(2)變量描述

變量類型;

變量長度;

變量的輸出格式;

變更的輸?格式;

變量標(biāo)識。

實例:

1.讀?逗號分隔數(shù)據(jù):cars_novname.csv

Acura,MDX,SUV,Asia,All,"$36,945","$33,337",3.5,6,265,17,23,4451,106,189

jerryspringer脫口秀Acura,RSXTypeS2dr,Sedan,Asia,Front,"$23,820","$21,761",2,4,200,24,31,2778,101,172

Acura,TSX4dr,Sedan,Asia,Front,"$26,990","$24,647",2.4,4,200,22,29,3230,105,183

Acura,TL4dr,Sedan,Asia,Front,"$33,195","$30,299",3.2,6,270,20,28,3575,108,186

Acura,3.5RL4dr,Sedan,Asia,Front,"$43,755","$39,014",3.5,6,225,18,24,3880,115,197

procimportdatafile="cars_novname.csv"out=mydatadbms=csvreplace;

getnames=no;

run;

proccontentsdata=mydata;

run;

alludeSAScreatesdefaultvariablenamesasVAR1-VARnwhenvariablesnamesarenotprentintherawdatafile.

2.讀?制表鍵分隔的數(shù)據(jù):

procimportdatafile=""out=mydatadbms=tabreplace;

getnames=no;

run;

3.根據(jù)不同任務(wù)將不同的數(shù)據(jù)集永久保存到對應(yīng)任務(wù)的?件夾下:

libnamedis"c:\disrtation";

procimportdatafile=""datadbms=dlmreplace;

delimiter='09'x;

getnames=yes;

run;

3.讀?空格鍵分隔的數(shù)據(jù):

procimportdatafile=""out=mydatadbms=dlmreplace;

getnames=no;

run;

4.分隔符的終極例?:uninstall是什么意思

Otherkindsofdelimiters

Youcanudelimiter=ontheinfilestatementtotellSASwhatdelimiteryouareusingtoparatevariablesinyourrawdatafile.Forexample,belowwehavearawdatafilethatusexclamationpoints!toparatethevariablesinthefile.

22!2930!4099

17!3350!4749

22!2640!3799

20!3250!4816

15!4080!7827

Theexamplebelowshowshowtoreadthisfilebyusingdelimiter='!'ontheinfilestatement.

DATAcars;

INFILE''DELIMITER='!';

INPUTmpgweightprice;

RUN;

PROCPRINTDATA=cars;

RUN;

strongboxAsyoucaneintheoutputbelow,thedatawasreadproperly.

OBSMPGWEIGHTPRICE

12

229304099

21733504749

32226403799

42032504816

51540807827

Itispossibletoumultipledelimiters.Theexamplefilebelowuseitherexclamationpointsorplussignsasdelimiters.

22!2930!4099

17+3350+4749

22!2640!3799

20+3250+4816

15+4080!7827

Byusingdelimiter='!+'ontheinfilestatement,SASwillrecognizebothoftheasvaliddelimiters.

DATAcars;

INFILE''DELIMITER='!+';

INPUTmpgweightprice;

RUN;

PROCPRINTDATA=cars;

RUN;

Asyoucaneintheoutputbelow,thedatawasreadproperly.

OBSMPGWEIGHTPRICE

12

229304099

21733504749

32226403799

42032504816

51540807827

import缺陷及注意事項:

Procimportdoesnotknowtheformatsforyourvariables,butitisabletoguesstheformatbadonwhatthebeginningofyourdatatlookslike.Mostofthetime,thisguessisfine.Butifthelengthofavariablediffersfrombeginningtoendofyourfile,youmightendupwithsometruncatedvalues.

重點(diǎn)語法-Infileoptions

Formorecomplicatedfilelayouts,refertotheinfileoptionsdescribedbelow.

DLM=

Thedlm=optioncanbeudtospecifythedelimiterthatparatesthevariablesinyourrawdatafile.Forexample,dlm=','indicatesacommaisthedelimiter(e.g.,acommaparatedfile,.csvfile).Or,dlm='09'xindicatesthattabsareudtoparateyourvariables(e.g.,atabparatedfile).

DSD

Thedsdoptionhas2functions.First,itrecognizestwoconcutivedelimitersasamissingvalue.Forexample,ifyourfilecontainedtheline20,30,,50SASwilltreatthisas203050butwiththethedsdoptionSASwilltreatitas2030.50,whichisprobablywhatyouintended.Second,itallowsyoutoincludethedelimiterwithinquotedstrings.Forexample,youwouldwanttouthedsdoptionifyouhadacommaparatedfileandyourdataincludedvalueslike"GeorgeBush,Jr.".Withthedsdoption,SASwillrecognizethatthecommain"GeorgeBush,Jr."ispartofthename,andnotaparatorindicatinganewvariable.

FIRSTOBS=

ThisoptiontellsSASwhatonwhatlineyouwantittostartreadingyourrawdatafile.Ifthefirstrecord(s)containsheaderinformationsuchasvariablenames,thentfirstobs=nwherenistherecordnumberwherethedataactuallybegin.Forexample,ifyouarereadingacommaparatedfileoratabparatedfilethathasthevariablenamesonthefirstline,thenufirstobs=2totellSAStobeginreadingatthecondline(soitwillignorethefirstlinewiththenamesofthevariables).

edonMISSOVER

ThisoptionpreventsSASfromgoingtoanewinputlineifitdoesnotfindvaluesforallofthevariablesinthecurrentlineofdata.Forexample,youmaybereadingaspacedelimitedfileandthatissuppodtohave10valuesperline,butoneofthelinehadonly9values.Withoutthemissoveroption,SASwilllookforthe10thvalueonthenextlineofdata.Ifyourdataissuppodtoonlyhaveoneobrvationforeachlineofrawdata,thenthiscouldcauerrors

throughouttherestofyourdatafile.Ifyouhavearawdatafilethathasonerecordperline,thisoptionisaprudentmethodoftryingtokeepsucherrorsfromcascadingthroughtherestofyourdatafile.

OBS=

Indicateswhichlineinyourraw

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論