効率のよいSASデータセットの結合方法

[OS]ALL
[リリース] 6.07, 6.08, 6.09, 6.10
[キーワード] base, datastep, marge, set, modify, key=, point=, nobs=, sql, procedure

[質問]

複数のSASデータセットを結合する場合でもっとも効率のよい方法を教えてください。

[回答]

SASデータセットの結合方法でよく使われる方法に、MERGEステートメント、SETステートメントが挙げられます。 しかし、これらの方法で結合をすると、すべてのオブザベーションをバッファ内へ読み込み、別のディスクスペースに書き出すため、約2倍のディスクスペースを要します。

MODIFYステートメントを利用すると、1オブザベーションを読み込むたびにバッファに読み、もとのディスクに書き戻すので無駄なディスクを使用しません。 しかし、1オブザベーションごとに、同じバッファ内で読み書きを行うため、SETステートメントを使う場合より処理時間がかかります。
それを解決するために、MODIFYステートメントにはKEY=、POINT=、NOBS=などのオプションが用意されており、これらの機能を使用することでデータ操作を容易にし、SETやMERGEステートメントを使用するよりも処理スピードを速くすることもできます。

この他、SQLプロシジャも、データ結合には非常にすぐれた処理スピードを実現しています。 このプロシジャはANSI(アメリカ国家規格協会)SQLに準拠して、SAS Institute Inc.が開発したプロシジャですので、SQL言語の知識があれば簡単に利用できます。

[参考]

  • 「SASランゲージ: リファレンス, Version 6, First Edition」(注文番号 10067)
  • 「Base SAS: SQLプロシジャ: 使用法およびリファレンス, Version 6, First Edition」(注文番号 16070)