2010年11月22日月曜日

SASのハッシュオブジェクトを試してみた

SAS9.1からハッシュを使えるようになったみたいなので、試してみようと思います。
(実行環境SAS9.2)

ハッシュ(連想配列)とは、「キー」と「値」を1組のペアとして関連付けされた配列のことです。
配列へのアクセスキーを自分で設定でき、順序付けもされていないので、使い勝手が良いです。

「SAS認定プロフェッショナル SAS Advanced Programmer for SAS®9」の出題範囲にもなっているので、受ける方は知っておいて損はないと思います。


国名をキーとして首都名を値にもつ配列worldを作ってみました。

data _NULL_;
 * ハッシュで使用するキー変数, データ要素変数の属性を設定します。;
 length country capital $50.;

 * SAS Hash Objectのインスタンスを作成します;
 declare hash world;
 world=_new_ hash();

 * アクセスキー変数を設定します;
 world.defineKey('country');

 * データ変数を設定します;
 world.defineData('capital');

 * ハッシュオブジェクトの初期設定を完了させる;
 world.defineDone();

 * ログに以下のメッセージが表示されないようにする;
 * NOTE: 変数 country は初期化されていません。;
 * NOTE: 変数 capital は初期化されていません。;
 call missing(country, capital);

 * アクセスキーと値を代入する;
 world.add(key: '日本', data: '東京');
 world.add(key: 'アメリカ合衆国', data: 'ワシントンD.C.');
 world.add(key: '大韓民国', data: 'ソウル');

 * 値を取得してみる その1;
 world.find(key: "日本");
 put country= capital=;

 world.find(key: "アメリカ合衆国");
 put country= capital=;

 * 値を取得してみる その2;
 country="日本";
 world.find();
 put country= capital=;

 country="大韓民国";
 world.find();
 put country= capital=;
run;


↓実行ログ
country= capital=東京
country= capital=ワシントンD.C.
country=日本 capital=東京
country=大韓民国 capital=ソウル
NOTE: DATA ステートメント 処理 (合計処理時間):
処理時間 0.07 秒
CPU 時間 0.07 秒


基本的な使い方はこんな感じだと思います。

第一印象としては、わざわざハッシュオブジェクトを呼び出したり、キーやデータ用の変数を作成したりと何かと面倒臭いっ!

ただし、参考サイトを見てるといろいろな機能があるみたいです。
機会があれば今後もう少し掘り下げて取り上げてみたいと思います。

投稿者:@Hoshi_NI


[google]

0 件のコメント:

コメントを投稿

ネイチャーインサイト サイトリニューアル&NIBLOGの引っ越し

ご連絡が遅くなりましたが、 ネイチャーインサイトの際とがリニューアルしました。 https://www.n-insight.co.jp/ それに伴い、NIBLOGも引っ越しすることになりました。 https://www.n-insight.co.jp/niblog/ ...