SAS - 陣列



SAS 中的陣列用於使用索引值儲存和檢索一系列值。索引表示保留記憶體區域中的位置。

語法

在 SAS 中,陣列的宣告使用以下語法:

ARRAY ARRAY-NAME(SUBSCRIPT) ($) VARIABLE-LIST ARRAY-VALUES

在上述語法中:

  • ARRAY 是宣告陣列的 SAS 關鍵字。

  • 陣列名 是陣列的名稱,遵循與變數名相同的規則。

  • 下標 是陣列將儲存的值的數量。

  • ($) 是一個可選引數,僅當陣列將儲存字元值時才使用。

  • 變數列表 是可選的變數列表,它們是陣列值的佔位符。

  • 陣列值 是儲存在陣列中的實際值。它們可以在這裡宣告,也可以從檔案或資料行讀取。

陣列宣告示例

可以使用上述語法以多種方式宣告陣列。以下是示例。

# Declare an array of length 5 named AGE with values.
ARRAY AGE[5] (12 18 5 62 44);

# Declare an array of length 5 named COUNTRIES with values starting at index 0.
ARRAY COUNTRIES(0:8) A B C D E F G H I;

# Declare an array of length 5 named QUESTS which contain character values.
ARRAY QUESTS(1:5) $ Q1-Q5;

# Declare an array of required length as per the number of values supplied.
ARRAY ANSWER(*) A1-A100;

訪問陣列值

可以使用print過程訪問儲存在陣列中的值,如下所示。在使用上述方法之一宣告之後,使用DATALINES語句提供資料。

DATA array_example;
INPUT a1 $ a2 $ a3 $ a4 $ a5 $;
ARRAY colours(5) $ a1-a5;
mix = a1||'+'||a2;
DATALINES;
yello pink orange green blue
;
RUN;
PROC PRINT DATA = array_example;
RUN;

執行上述程式碼時,將產生以下結果:

array_character_2_result

使用 OF 運算子

OF 運算子用於分析陣列中的資料,以對陣列的整行執行計算。在下面的示例中,我們應用每一行的值之和與平均值。

DATA array_example_OF;
   INPUT A1 A2 A3 A4;
   ARRAY A(4) A1-A4;
   A_SUM = SUM(OF A(*));
   A_MEAN = MEAN(OF A(*));
   A_MIN = MIN(OF A(*));
   DATALINES;
   21 4 52 11
   96 25 42 6
   ;
   RUN;
   PROC PRINT DATA = array_example_OF;
   RUN;

執行上述程式碼時,將產生以下結果:

array_of_result

使用 IN 運算子

也可以使用 IN 運算子訪問陣列中的值,該運算子檢查陣列行中是否存在某個值。在下面的示例中,我們檢查資料中是否存在顏色“Yellow”。此值區分大小寫。

DATA array_in_example;
   INPUT A1 $ A2 $ A3 $ A4 $;
   ARRAY COLOURS(4) A1-A4;
   IF 'yellow' IN COLOURS THEN available = 'Yes';ELSE available = 'No';
   DATALINES;
   Orange pink violet yellow
   ;
   RUN;
   PROC PRINT DATA = array_in_example;
   RUN;

執行上述程式碼時,將產生以下結果:

array_in_result
廣告
© . All rights reserved.