Leo Yeh's Blog

SAS 基礎程式 (12)

教學目標

初步了解 SAS 基礎程式的陣列基本概念。

重點概念

(請注意以下內容皆為課程心得筆記,若有不清楚的部份,建議上官方主辦的 SAS Programming 2 課程,謝謝。)

所謂陣列是指暫時性的群組,必須要指定陣列名稱,必須全部文字或全部數值格式,只存在於 DATA STEP 中執行,此外陣列不是變數。

陣列敘述格式

1
ARRAY 陣列名稱 {個數} <$> <長度> <陣列元素>;

表示方式一

1
ARRAY Var{5} Var1-Var5;

表示方式二

1
ARRAY Var{*} Var1-Var5;

表示方式三

1
ARRAY Var{*} Var1--Var5;

表示方式四

1
ARRAY Var{*} Var:;

表示方式五

1
ARRAY Var{5}

其中 { } 也可以用大括號、中括號和小括號, {個數} 必須和陣列元素個數需要相同,否則會在編譯期間發生錯誤,以及陣列無法應用於編譯期間執行的敘述,像是 KEEP、DROP、…等敘述。此外定義陣列時不需要相似和相鄰,也能夠指定為陣列中的元素,

接著表示方式一至表示方式四主要會對應已存在的變數,而表達方式五則會因為在 PDV 中找不到變數而產生新的變數,同時設定預設值為 0,分別命名為 Var1、Var2、Var3、Var4 和 Var5,同時陣列初始值會保留至 PDV 中不會重新啟始空白或 0。

再來陣列也可以應用於加總函數中,以及透過 DIM 函數主要是回傳元素的個數,例如 DIM(Var) 的結果為 5,此外每個陣列變數預設為數值格式和長度為 8,至於 { } 括號中的變數還可以進行四則運算。

最後我們常常會在資料處理的過程中使用陣列,但是當處理完成之後就需要將陣列所產生的變數刪除,此時除了透過 DROP 敘述之外,還可以透過 TEMPORARY 選項宣告暫時性的變數欄位。

表示方式一

1
ARRAY Temp_Var{5} _TEMPORARY_(0,0,0,0,0);

表示方式二

1
ARRAY Temp_Var{5} _TEMPORARY_(0 0 0 0 0);

總結在 SAS 中的陣列宣告與使用方式相較於其它程式語言非常有彈性,主要就是將陣列指標和變數分別對應,但是請注意不能文字和數值變數同時用,一定要所有變數皆為文字,或者所有變數皆為數值。

相關資源

⬅️ Go back