【Code Teaching】如何讀取與輸出SAS Dataset

在進行任何資料處理前,讀取資料是必不可少的步驟,而資料處理完成後,同樣也需要輸出資料,所以本篇文章就來介紹如何讀取與輸出SAS Dataset的程式碼

讀取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實體路徑


謝謝閱讀這篇文章,有問題歡迎在下方留言

Categories: Basic