Leo Yeh's Blog

SAS 快速入門 (7)

教學目標

撰寫 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:\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 DATA=MYLIB.customer;
RUN;

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

SAS 範例程式

1
2
3
4
5
6
7
8
9
10
11
12
DATA 'C:\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 CONTENTS DATA=MYLIB.customer;
RUN;

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

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

相關資源

⬅️ Go back