配列入門

スポンサーリンク

SASでも配列はあります。
冗長な記事になっていますが、入門ってことで。

構文

数値変数の配列
array 配列名 [要素数または*] 変数1 変数2 ・・・;


文字変数の配列
array 配列名 [要素数または*] $ 変数1 変数2 ・・・;


要素数を囲んでいる大かっこ([])は中かっこ({})や小かっこ(())でも問題なく機能します。公式ドキュメントにも書いてありました。

例1(小かっこ())
data ArrayTest_1;
  array ar(*) a b c;
  ar(1) = 11;
  ar(2) = 12;
  ar(3) = 13;
run;
例2(中かっこ{})
data ArrayTest_2;
  array ar{*} a b c;
  ar{1} = 21;
  ar{2} = 22;
  ar{3} = 23;
run;
例3(大かっこ[])
data ArrayTest_3;
  array ar[*] a b c;
  ar[1] = 31;
  ar[2] = 32;
  ar[3] = 33;
run;
例4(かっこ種類を混ぜてみる)
data ArrayTest_4;
  array ar[*] a b c;
  ar(1) = 41;
  ar{2} = 42;
  ar[3] = 43;
run;

こんな書き方でも問題なく動きます。

例5(変数に直接入力)
data ArrayTest_5;
  array ar[*] a b c;
  a = 51;
  b = 52;
  c = 53;
run;

よくある書き方。

例6(要素番号の最初を0(ゼロ)にしても認識するか)
data ArrayTest_6;
  array ar[*] a b c;
  ar[0] = 61;
  ar[1] = 62;
  ar[2] = 63;
run;

他の言語の経験があるとこれが意外なところ。
配列の要素が1から始まるのは直感的に理解できる。
このあたりSASは開発者に優しい設計になっていると思います。

例7(文字変数の場合)
data ArrayTest_7;
  array ar[*] $ a b c;
  ar[1] = "aaa";
  ar[2] = "bbbb";
  ar[3] = "ccccc";
run;
例8(ループと混ぜて見る)
data ArrayTest_8;
  array ar[*] a b c;
  do i = 1 to 3;
    ar[i] = i + 80;
  end;
run;

実際はこの例のようにループと混ぜて使うことがほとんどです。
定番の書き方でもあるので、自分で書いてみて慣れておきたいです。

コメント