當前位置:成語大全網 - 書法字典 - 如何使用sas小冊子學習sas

如何使用sas小冊子學習sas

1)有兩種標註方法,壹種是*和;號碼;壹個用/* */表示。請註意,第二種註釋方法不能放在第壹列中。

2)錯誤SAS程序通常將執行錯誤標記為醒目的紅色字母。妳可能忘記了分號,拼錯了字母,按錯了鍵盤,壹個小錯誤就會使整個程序無法運行。當妳看到紅色部分和額外的黑色部分時,不要灰心。

3)SAS數據集也稱為表,觀察值也稱為行,變量也稱為列。

4)字符變量的缺失值用空格表示,數值變量的缺失值用句點(。).

5)命名變量和數據集時,請遵循以下規則:

該名稱的長度應為32個字節或更少。

。以字母或下劃線開頭。

。可以包含字母、數字或下劃線,而不是% $!*@。

。可以是小寫或大寫字母,不區分大小寫。

6)SAS程序有兩個基本模塊:數據步驟和過程步驟。

典型的SAS程序從按數據步驟創建SAS數據集開始,然後按流程步驟分析數據。下面是壹個示例:在數據步驟中,米被轉換為公裏,結果在流程步驟中輸出。

數據步驟

數據距離;

英裏數= 26.22;

公裏= 1.61 *英裏;

繼續步驟

過程打印數據=距離;

跑步;

數據步驟和流程步驟由語句組成(廢話),壹個流程少則1條語句,多則數百條語句。初學者經常犯混淆兩種過程語句的錯誤。只要他們記住數據步驟負責讀取和修改數據,而流程步驟負責分析數據、輸出報告和實用函數,他們就不會出錯。

數據步驟以數據語句開始:數據+數據名稱。在上述示例中,數據步驟處理名為distance的數據。為了讀取外部數據和原始數據,數據步驟提供了DO循環、IF-THEN/ELSE以及壹些數字和字符函數。數據步驟還可以按照您想要的方式合並數據集,包括串聯和匹配合並。

流程步驟以proc語句開始:proc+流程名稱(print,sort,means…),SAS流程步驟可以處理從數據存儲和輸出到差異分析和3D圖表的所有內容。

典型的程序從數據語句開始,輸入或修改數據,然後將數據傳遞給PROC語句。但是您不必使用這種模式來混合數據和proc語句。您可以按任意順序排列數據和過程的順序,壹個程序甚至可以只有數據語句或過程語句。

以下是data語句和proc語句之間的壹些基本區別:

數據步驟

以數據語句開始

讀取和修改數據

創建SAS數據集

繼續步驟

以PROC語句開始

執行特定的分析或功能

產生結果或報告

7)數據步驟以逐行、壹個觀察值和壹個觀察值的順序執行。

很容易理解數據步驟是“逐行執行”的。然而,許多新手仍然容易在這裏犯錯誤,例如在創建變量之前使用變量。如果Z變量是由兩個變量X和Y組合而成的新變量,那麽有必要確保創建Z變量的語句在創建X和Y變量的語句之後。

而“觀察值的執行”就不那麽容易理解了。這意味著SAS首先讀取壹個觀察,然後對這個觀察執行data step的所有語句(當然是逐行執行),然後讀取第二個觀察並執行它。SAS的每次執行只有壹次觀察。

8)SAS讀取數據的方法主要有以下幾種:

直接輸入;

從原始數據文件創建SAS數據集;

將其他軟件中的數據文件轉換為SAS數據集;

。直接讀取其他軟件的數據集;

9)內部原始數據

如果數據直接輸入到SAS程序中,則該數據是SAS內部數據。DATALINES表示SAS後面是數據行,直到分號結束,它可以開始壹個新行或跟隨數據。

10)外部原始數據

當數據在SAS程序之外時,INFILE語句用於告訴SAS外部數據的文件名和存儲路徑,它在data語句之後,INPUT語句之前。INFILE後面的文件名和路徑都要加引號,各種系統的引用方式不同:

windows:INFILE“C:\ Mydir \ president . dat“;

UNIX:INFILE“/home/mydir/president . dat“;

OpenVMS:INFILE“【username . mydir】president . dat“;

OS/390或z/OS INFILE‘MYID。predi den . DAT‘;

11)SAS日誌

讀取外部數據時,SAS日誌會提供壹些有用的信息。檢查這些信息可以解決壹些問題,例如將INFILE語句讀取的記錄數與數據集中的實際觀察值進行比較,並確定SAS是否正確讀取了數據。

12)記錄過長

在某些操作環境中,SAS假設外部數據文件的記錄長度為256或更少(記錄長度是指壹行中的字符數,包括空格)。如果長度太長,SAS無法讀取所有內容。此時,需要在INFILE語句中使用LRECL=來指定長度,該長度必須是數據中最長壹行的長度,例如:

INFILE‘c:\ MyRawData \ president . dat‘lrecl = 2000;

您可以通過SAS日誌查看最大記錄長度。

13)輸入語句是數據步驟的壹部分,它告訴SAS如何讀取原始數據。用List input編寫input語句:在INPUT關鍵字後列出變量名(根據變量在文件中出現的順序)。變量名少於32字節(含32字節),只能包含字母、下劃線和數據,並且必須以字母或下劃線開頭。如果變量是字符串,後跟要價符號“$”,則值之間至少有壹個空格,語句應以分號結束。例如:輸入姓名$年齡身高

這意味著輸入了三個變量,其中name是字符串,age和height是數值變量。

14)列輸入讀取以固定列排列的原始數據。

當某些原始數據的值之間沒有空格時,或者當缺少的值沒有用句點替換時,不能使用列表輸入。

但是當每個變量的值出現在數據行的相同位置,並且變量值是字符串或標準值(僅包括數據、小數點、符號和科學標記的e)時。逗號和日期不能算),可以用列輸入來讀。

與列表輸入相比,列輸入具有以下優點:

變量值之間不需要空格;

缺少的值可以直接用空格替換;

的;字符串可以包含空格;

您可以跳過不必要的變量。

列輸入的input語句的格式如下:input關鍵字後接變量名,後接變量的列位置(列位置是字符或數值在壹行中的位置)。“空格+$”仍應在字符串變量名後使用,變量名仍應由空格分隔。例子如下:

輸入姓名$ 1-10年齡11-13身高14-18;

該語句顯示姓名變量占據了該行的第壹列和第十列,這是壹個字符串變量,年齡占據了11-13列,這是壹個數值變量,身高占據了14-18列,這是壹個數值變量。

15)信息系統讀取非標準格式的原始數據。

有時原始數據不全是字符串或數值,例如包含逗號的字符串值(如1,00,001)無法被計算機讀取。其他數據如美元符號、十六進制和壓縮十進制都是非標準數據。在SAS中,信息可以用來告訴計算機如何讀取這些值。

日期是最常見的非標準數據。SAS informats會將類似10-31-2003或31OCT03的數字轉換為日期的起點是1960 1,即這壹天的數字是0。

信息的三種常見格式是:字符串、數值和日期。這三種格式的形式如下:

字符$ informatw。

數字信息d

日期信息。

$是字符串,表示信息(如日期的MMDDYY),w是寬度,d是小數位數,最後是句點“。”。如果沒有句點,SAS將采用以下形式(如MMDDYY)作為變量名。簡單格式化輸入的簡單輸入語句如下:

輸入名稱$10。三歲。身高5.1出生日期MMDDYY10。;

Name為字符串變量,占用10寬度,即列位置為1-10;

年齡是壹個數值變量,占據三個寬度,列位置範圍為11-13;

Height是壹個數字變量,占用五種寬度,包括作為小數點的1和小數點本身,列位置從14到18(例如150.3)。

最後,日期變量從19列開始,采用MMDDYY的形式。

16)混合閱讀模式

每種數據讀取方法都有其優點,list是最簡單的,column和formatted都很復雜但不要求變量之間有空格,並且變量名可以包含變量,而formatted可以讀取日期等特殊數據。SAS允許您靈活匹配不同的閱讀方法,以實現最大的便利性。

有許多方法可以讀取數據,下面的過程就是其中之壹:

數據國家;

INFILE“C:\ MYrawdata \ park . dat“;

輸入park name $ 1-22 STATE $ Year @ 40 areas coma 9。;

PROC打印數據=國家;

標題“選擇國家公園”;

跑步;

其中,以列模式讀取ParkName,以列表模式讀取州和年份,以格式化模式讀取面積。

有時,混合讀取方法會遇到問題:SAS通過用指示器標記位置來讀取壹行原始數據,但每種讀取方法對指示器的使用略有不同。列表模式下,SAS自動找到非空白區域並開始讀取;在列模式下,SAS讀取您指定的特定位置;信息化模式下,SAS忽略指標標準,只是依次讀取。此時,將需要列指示符@n來人為地使SAS讀數直接跳轉到壹列。

17)讀取雜亂的原始數據。

有些數據排列混亂,長度不壹。這種數據需要新的工具來處理:@‘字符‘列指示符和冒號修飾符。

2.9中提到的@“字符”列指示符允許SAS直接從列中讀取數據。但是有時您不知道要讀取的數據從哪壹列開始。這時,妳只需要知道要讀取的數據前面的字符或單詞。例如,有壹個關於狗的原始文件,妳想讀取狗的品種編號,但文件排列混亂,只知道品種編號跟在品種壹詞後面,那麽妳可以通過以下方式讀取:輸入@‘品種:‘dog Breed $;

冒號修飾符由於輸入讀取字符串變量默認為8個字符,因此在上面的示例中,如果dogbreed名稱超過8個字符,則需要定義長度,該長度定義為$length,並且空格包含在該長度中。如果您想在SAS讀取過程中遇到空格時停止讀取,您應該在$length前添加壹個冒號“:”。例如,原始數據中有這樣壹行:

示例網絡日誌是雜亂數據的壹個很好的例子。以下是壹個網站的網絡日誌。數據以訪問IP開始,然後是訪問日期、訪問文件名和其他信息。

現在我想讀取訪問日期和被訪問的文件名,但是它們在每行中所占的列的位置是不同的,並且每行中文件名的長度也是不同的,因此SAS以下列方式讀取該文件:

數據博客:

INFILE“c:\ dog weblogs . txt“;

輸入@‘【‘訪問日期日期11。@“獲取”文件:20美元。;

PROC打印數據=網絡日誌;

標題“狗狗護理網絡日誌”;

跑步;

作為列指示符,@‘【‘告訴SAS在【】之後讀取內容,@‘GET‘告訴SAS在GET之後讀取內容。因為文件名是字符串變量,這裏基本會超過8個字節,所以追加$20。

18)跨行觀測值的讀取方法

通常,原始文件中的壹行代表壹個觀察值,有時觀察值會越過該行。由於SAS將自動轉到下壹行讀取數據,直到所有觀察到的變量(在輸入語句中給出)都被讀取,因此您需要告訴SAS何時不要換行,以便SAS-got-to-a-new-line的暫停描述不會出現在日誌中。此時,您需要在輸入語句中添加壹個行指示符。()

行指示符,斜杠/:告訴SAS跳到原始數據的第二行;#n:跳到第n行,其中n表示原始數據中某個觀察的行數(#2使SAS跳到某個觀察的第二行),#n不能來回跳轉。

例如,有壹組關於溫度的數據。temperature.dat的第壹條線代表城市和州,第二條線代表今天的最高溫度和最低溫度,第三條線代表歷史上的最高溫度和最低溫度。

諾姆阿克

55 44

88 29

按照以下程度讀取該數據:

數據highlow

INFILE“c:\ myrawdata \ temperature . dat“;

輸入城市$州$

NormalLow高NormalLow低

# 3 RecordHigh RecordLow

PROC打印數據= highlow

標題“七月的高溫和低溫”;

跑步;

輸入後,告訴SAS讀取第壹行的城市變量和州變量,並斜杠/告訴SAS移動到下壹行的第壹列,以便讀取normalhigh和normallow。#3告訴SAS移動到第三行的第壹列,以便繼續讀取觀察值的recordhigh變量和recordlow變量。這裏/妳可以用#2代替#3。

19)當壹行中出現多個觀察值時,可以在輸入語句的末尾添加壹個停止符號@ @。

20)讀取原始數據的壹些觀察值。

當SAS讀取壹行觀測值時,它首先讀取足夠的變量來決定是否有必要保留這壹行的觀測值。然後在輸入語句的末尾添加符號@,這被稱為尾隨at(稱為尾隨at),它告訴SAS先保持這壹行,同時使用IF語句檢查觀察值是否滿足需要。如果是這樣,您可以使用輸入語句來讀取現有變量。

@ vs @@@類似於@ @,兩者都是行保持說明符。區別在於他們停留的時間長短。@可以讓SAS停留到下壹個輸入語句(不換行),@ @可以讓停留時間轉到下壹個數據步驟。