1 臨時和永久數據集
SAS數據集名稱
SAS數據集有臨時和永久兩種存在方式。所有的SAS數據集都有一個兩級名稱,兩個層級之間用句點.分隔。
- 第一層級:邏輯庫引用名
- 第二層級:數據集名稱
注意,兩級名稱出現在 DATA 語句和 DATA= 選項中
邏輯庫引用名、數據集名稱都遵循SAS命名的標准規則:以字母或下划線開始,且只包含數字、字母或下划線。此外,邏輯庫引用名長度不超過8個字符,數據集名稱不超過32個字符。
臨時SAS數據集
沒有聲明邏輯庫引用名的數據集,都是臨時數據集,默認保存在 WORK 邏輯庫中,會話結束時,會被SAS刪除。
永久SAS數據集
創建永久SAS數據集,需要使用邏輯庫引用名。而使用之前需要先進行定義,可以使用新建邏輯庫 或 LIBNAME語句進行定義。
示例:libname zdata "C:\user\datafile" ;
2 通過LIBNAME語句使用永久SAS數據集(libname)
LIBNAME語句定義邏輯庫引用名,是SAS中創建邏輯庫最常見的方法。其基本形式如下:
libname 邏輯庫名稱 '邏輯庫保存路徑' ;
注意,在不同系統操作環境下,路徑會有所不同。
創建永久SAS數據集
libname zdata 'D:\data'; /* 1.創建邏輯庫引用名zdata */
data zdata.plants; /* 3.存儲讀取的數據到命名為plants的永久數據集中 */
infile 'D:\data\sas_file\test.dat'; /* 2.從名為test的文件中讀取原始數據 */
上面這段程序,運行邏輯是先1,再2,最后3。、
讀取永久SAS數據集
要使用永久SAS數據集,可以在程序中包含一條LIBNAME語句,並通過兩級名稱引用它。
示例:
libname zdata1 'D:\data'; /* 引用名可以不一樣,但路徑必須一致 */
proc print data = zdata1.plants; /* 引用時,數據集名稱是唯一標識,不能更改 */
title "常見植物數據表";
run;
3 通過直接引用使用永久SAS數據集('路徑+名稱')
SAS也可以不建立邏輯庫引用名和定義SAS邏輯庫,直接引用永久SAS數據集,但「不推薦」此用法。
直接創建永久SAS數據集
只需要把數據集的名稱和路徑放在要使用該數據的引號之內,即可直接創建永久SAS數據集。
data "D:\data\sas_file\test.dat"; /* windows操作環境 */
data "/home/rds/zdata/app.dat"; /* unix操作環境 */
直接引用永久SAS數據集
只需要在要使用該數據的地方,將該數據集的路徑和名稱包含在引號中即可。
proc print data = "D:\data\sas_file\test.dat";
4 列出SAS數據集中的內容(contents)
SAS存儲數據集,除了存儲數據本身以外,還會存儲有關該數據集的一些其他信息(也被稱為描述符部分),可以使用 CONTENTS 過程查看這部分信息,只需要在 data= 選項后面指定數據集即可。
語法:proc contents data = data-set ;
*創建邏輯庫;
libname zdata "D:\data\sas_file";
*data步創建一個數據集;
data zdata.funnies (label = 'comics character data'); /*'label='選項,給數據集加標簽*/
input id name $ height weight dob mmddyy8. @@;
label id = 'identification no.' /*'label'語句,給變量加標簽*/
height = 'height in inches'
weight = 'weight in pounds'
dob = 'data of birth';
informat dob mmddyy8.; /*格式化輸入*/
format dob worddate18.; /*格式化輸出*/
datalines;
53 susie 42 41 07-11-81 54 charlie 46 55 10-26-54
55 calvin 40 35 01-10-81 56 lucy 46 52 01-13-55
;
run;
*使用proc contents過程描述數據集;
proc contents data = zdata.funnies;
run;
注意,給數據集或者變量加標簽時,標簽長度不能超過256個字符。加標簽的目的,是記錄下更多信息。此外,data步和proc步都可以為數據添加標簽,但適用范圍有區別:
- data步加label:描述信息儲存在數據集中,打印會顯示
- proc步加label:標簽只在process中使用,打印不會顯示
上面程序還包含了 informat 和 foamat 語句,兩者可以用來為變量關聯輸出格式和輸出格式。
- informat 語句:格式化輸入
- foamat 語句:格式化輸出
這兩種語句對數據起作用的存儲邏輯和上面一樣,data步若指定了informat 和 foamat 語句,則指定的輸入格式和輸出格式會被存儲到數據集中,打印會顯示。反之,proc步的則適用於proc過程中,打印不顯示。
最后,proc contents的輸出是三張表,分別描述了數據集信息、每個變量信息:
關於該數據集 | 關於每個變量 |
---|---|
數據集名稱 | 類型(數值或者字符) |
觀測數 | 長度(以字節為單位的存儲大小) |
變量數 | 用於打印的輸出格式(如果有的話) |
創建日期 | 用於輸入的輸入格式(如果有的話) |
數據集標簽(如果有的話) | 變量標簽(如果有的話) |