SAS | 邏輯庫和SAS數據集


 

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的輸出是三張表,分別描述了數據集信息、每個變量信息:

關於該數據集 關於每個變量
數據集名稱 類型(數值或者字符)
觀測數 長度(以字節為單位的存儲大小)
變量數 用於打印的輸出格式(如果有的話)
創建日期 用於輸入的輸入格式(如果有的話)
數據集標簽(如果有的話) 變量標簽(如果有的話)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM