Sas-arrays

提供:Dev Guides
移動先:案内検索

SAS-アレイ

SASの配列は、インデックス値を使用して一連の値を保存および取得するために使用されます。 インデックスは、予約済みメモリ領域の場所を表します。

構文

SASでは、配列は次の構文を使用して宣言されます-

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

上記の構文では-

  • ARRAY は、配列を宣言するSASキーワードです。
  • ARRAY-NAME は、変数名と同じ規則に従う配列の名前です。
  • SUBSCRIPT は、配列が保存する値の数です。
  • *($)*は、配列が文字値を保存する場合にのみ使用されるオプションのパラメーターです。
  • VARIABLE-LIST は、配列値のプレースホルダーである変数のオプションのリストです。
  • ARRAY-VALUES は、配列に格納されている実際の値です。 ここで宣言するか、ファイルまたはデータラインから読み取ることができます。

配列宣言の例

上記の構文を使用して、配列をさまざまな方法で宣言できます。 以下に例を示します。

# 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