教學目標

撰寫 SAS 程式快速入門之了解暫存和永久資料集,適合對象為沒有學過 SAS 程式,但想學 SAS 程式的使用者。

重點概念

基本上,在 SAS 中主要有兩種類型的資料集,分別為暫存和永久,暫存資料集只會存在於目前的 Session 或工作中,當關閉 SAS 或結束工作時則會被刪除;然而永久資料集則是當關閉 SAS 或結束工作時仍然存在。

在 SAS 中所有的資料集都會用 . 句號分開兩層資料集名稱,例如:WORK.CUSTOMER,其中第一層通常是資料館中邏輯庫的名稱,第二層通常是成員的名稱。命名規則則是以字母或底線開頭,名稱只能包括字母、數字和底線,邏輯庫名稱只能有 8 個字元,而成員名稱則能有 32 個字元。

暫存資料集

一般來說,資料集皆是由 DATA STEP 創建,若是邏輯庫不指定則預設為 WORK 邏輯庫也就是暫存資料集,請參考下表。

|DATA 敘述|資料集類型|邏輯庫名稱|成員名稱|
|—|—|—|—|—|
|DATA customer;|暫存資料集|WORK|customer|
|DATA WORK.customer;|暫存資料集|WORK|customer|
|DATA MYLIB.customer;|永久資料集|MYLIB|customer|

永久資料集

此外我們還能透過 LIBNAME 敘述宣告永久資料集,主要需要指定邏輯庫名稱和儲存的路徑,請參考下表。

|LIBNAME 敘述|作業系統|資料集類型|邏輯庫名稱|儲存路徑|
|—|—|—|—|
|LIBNAME MYLIB ‘C:MYLIB’;|Windows|永久資料集|MYLIB|C:MYLIB|
|LIBNAME MYLIB ‘/home/mylib’;|Linux|永久資料集|MYLIB|/home/mylib|

接著若我們輸入下述 SAS 程式將會在儲存路徑中產生 customer.sas7bdat 的檔案。

SAS 範例程式

1
2
3
4
5
6
7
8
9
10
11
12
13
LIBNAME MYLIB 'C:MYLIB';
DATA MYLIB.customer;
INPUT Name $ Gender $ Age City $;
DATALINES;
Name Gender Age City
Alice F 16 Taipei
Bob M 27 Keelung
Candy F 18 Taichung
David M 24 Kaohsiung
Emma F 26 Tainan
;
PROC PRINT;
RUN;

再來我們也可以透過直接指定路徑使用永久資料集,請參考下述 SAS 程式。

SAS 範例程式

1
2
3
4
5
6
7
8
9
10
11
12
DATA 'C:MYLIBcustomer';
INPUT Name $ Gender $ Age City $;
DATALINES;
Name Gender Age City
Alice F 16 Taipei
Bob M 27 Keelung
Candy F 18 Taichung
David M 24 Kaohsiung
Emma F 26 Tainan
;
PROC PRINT DATA=MYLIB.customer;
RUN;

最後我們要如何得知 SAS 資料集所儲存的目錄呢?其實很簡單只要透過 PROC CONTENT 敘述就能夠查看 SAS 資料集的描述,請參考下述 SAS 程式。

SAS 範例程式

1
2
3
4
5
6
7
8
9
10
11
12
DATA 'C:MYLIBcustomer';
INPUT Name $ Gender $ Age City $;
DATALINES;
Name Gender Age City
Alice F 16 Taipei
Bob M 27 Keelung
Candy F 18 Taichung
David M 24 Kaohsiung
Emma F 26 Tainan
;
PROC CONTENTS DATA=MYLIB.customer;
RUN;

此時就能夠查看 MYLIB.customer 永久資料集的詳細資訊,包括建立日期、修改日期、觀察值數量、變數數量、檔案名稱、內容編碼、… 等資訊。

總結在 SAS 中主要有兩種類型的資料集,分別為暫存和永久,預設為 WORK 暫存資料集,當然我們也可以透過 LIBNAME 指定永久資料集。一般來說,SAS 在進行資料預處理時根據資料複雜程度將會建立許多暫存資料集,此時就必須注意 SAS WORK 暫存資料夾的儲存空間和讀取速度,這將會影響 SAS 執行效能。

相關資源