在進行任何資料處理前,讀取資料是必不可少的步驟,而資料處理完成後,同樣也需要輸出資料,所以本篇文章就來介紹如何讀取與輸出SAS Dataset的程式碼
Contents
讀取SAS Dataset
讀取SAS Dataset最常使用的方法是透過Libname敘述句關聯來源資料夾
以Libname敘述句關聯來源資料夾
libname Mylib "E:\Test_sasfile";
- 透過libname敘述句關聯「E:\Test_sasfile」目的資料夾
- 接著會在左側資料館出現Mylib這個資料館(如果看不到的話對最上方資料館右鍵重新整理)
- 接下來就可以透過「Mylib.Test」使用test這個SAS Dataset了
讀取後,新建立SAS Dataset
當要讀取的SAS Dataset檔案大小較小、或是擔心不小心修改到原本的檔案時,可以透過Data Step再建立檔案
此時可以選擇建立暫存SAS Dataset或是永久SAS Dataset(以暫存SAS Dataset示範)
data test;
set Mylib.test;
run;
- data敘述句後方隔空白放入你想要建立的暫存SAS Dataset名稱
- set敘述句放入來源的SAS Dataset,這邊放入上一個標題最後提到的「Mylib.test」
- 最後再補上1個run敘述句
- 執行完成就可以在WORK暫存資料館中看到test這個暫存SAS Dataset
Plus:限制關聯資料館的權限
如果今天要讀取的SAS Dataset檔案太大、或是不想花費時間再建立SAS Dataset時,可以選擇限制關聯資料館的權限
如此一來,既可以避免不小心修改到來源SAS Dataset,也可以省下重新建立SAS Dataset的時間
libname Mylib "E:\Test_sasfile" access=readonly;
- 修改libname敘述句,在資料夾路徑後面加入「access=」這個option
- 在「access=」放入readonly這個值,這表示關聯資料館只有讀取權限,並沒有輸出權限
- 此時在日誌中會看到關聯成功的資訊,但與第一次關聯時並無差別
以下面這段語法去修改來源的test SAS Dataset,確認現在Mylib這個關聯的資料館是不是只有讀取權限
data mylib.test;
set mylib.test;
String="test";
run;
- 日誌中會出現類似的ERROR,這時候就表示「access=readonly」option有成功啟用了!
以實體路徑讀取SAS Dataset
當確切知道SAS Dataset的來源路徑時,其實也可以透過Data Step直接讀取指定的SAS Dataset
但此方法僅適用於少數SAS Dataset需要讀取,如果有大量的SAS Dataset時,透過Libname敘述句還是更有效率
data test;
set "E:\Test_sasfile\Test.sas7bdat";
run;
- data敘述句後方隔空白放入你想要建立的暫存SAS Dataset名稱
- set敘述句放入來源的實體路徑(包含檔案名稱與副檔名)
- 最後再補上1個run敘述句
- 執行完成就可以在WORK暫存資料館中看到test這個暫存SAS Dataset
觀察日誌給我們的資訊,會發現與使用「set Mylib.test;」不同,會列出set敘述句所使用的來源SAS Dataset實體路徑
輸出SAS Dataset
輸出SAS Dataset最常使用的方法同樣是透過Libname敘述句關聯輸出資料夾
以Libname敘述句關聯輸出資料夾
libname Output "E:\Output";
- 透過libname敘述句關聯「E:\Test_sasfile」輸出資料夾
- 接著會在左側資料館出現Output這個資料館(如果看不到的話對最上方資料館右鍵重新整理)
- 接下來就可以透過「Output.test」輸出test這個dataset到Output資料館
- 此Output資料館也是之前基礎概念所介紹到的永久資料館 (【02】資料管理|資料集與資料館的基礎)
輸出SAS Dataset
與讀取SAS Dataset所做的步驟不同,我們把test建立到剛剛關聯的Output資料館,此時Output.test為永久SAS Dataset(因為存到永久資料館中)
data Output.test;
set test;
run;
- data敘述句後方隔空白放入上一個標題最後提到的「Output.test」,test可以取你想要建立的永久SAS Dataset名稱
- set敘述句放入來源的SAS Dataset
- 最後再補上1個run敘述句
- 執行完成就可以在Output永久資料館中看到test這個永久SAS Dataset
以實體路徑輸出SAS Dataset
同樣地,我們也可以使用實體路徑來輸出SAS Dataset
※但要注意新建立的SAS Dataset在輸出資料夾中沒有相同名字的檔案,避免覆蓋掉原本的資料
data "E:\Output\test.sas7bdat";
set test;
run;
- data敘述句後方隔空白放入目的的實體路徑(包含檔案名稱與副檔名)
- set敘述句放入來源的SAS Dataset
- 最後再補上1個run敘述句
- 執行完成就可以在「E:\Output」路徑下看到test這個永久SAS Dataset
觀察日誌給我們的資訊,會發現與使用「data Output.test;」不同,會列出data敘述句所使用的目的SAS Dataset實體路徑
謝謝閱讀這篇文章,有問題歡迎在下方留言