SASデータセットの変数の並び順を制御する方法はありますか。
SASではプログラム中で変数を宣言するタイミングが早い順番に、変数の並び順が決定されます。この規則を応用することで、データセット内の変数の順番を任意に指定できます。もし、同じ変数に対する宣言が複数ある場合には、より早い宣言が有効になります。
変数を宣言する定義のうち、代表的な2つのステートメントをご紹介します。
■ LENGTHステートメントを使用する方法
変数の定義順序を指定するために、変数の属性(数値・文字)、および長さを定義するLENGTHステートメントを利用します。
/* LENGTH ステートメントの例 */
DATA test_len;
LENGTH weight 8 height 8 age 8 sex $ 4 name $ 12;
SET sashelp.class;
RUN;
■ FORMATステートメントを使用する方法
変数の定義順序を指定するために、変数の出力形式(フォーマット)を定義するFORMATステートメントを利用します。
/* FORMAT ステートメントの例 */
DATA test_fmt;
FORMAT weight height age sex name;
SET sashelp.class;
RUN;
ただし、SETステートメントには変数を宣言することと同等の機能があるので、上記の各ステートメントは、SETステートメントよりも先に指定してください。
お世話になります。
formatステートメントを出力形式を変更しつつ、変数の順序を変更する際にはsetステートメントの前にformatステートメントをおいて、すべての変数を並べつつすべての出力形式を指定しないといけない、ということになりますでしょうか?
それだと変数が多く、出力形式を指定したい変数が2~3個のデータセットだと面倒なので、一部の変数の出力形式を指定するデータステップと変数の順序を指定するデータステップの一つに分けるほうが面倒ではないということでしょうか?
よろしくお願いいたします。
FORMATステートメントを複数記述してもいいと思います。最後に定義したものが利用されます。
data test_fmt;
format weight height age sex name;
format height dollar.;
set sashelp.class;
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
コミュニティの基本的なガイドラインについてご説明します。まずは、こちらをご参照ください。
SAS Support CommunitiesのFAQはヘルプに記載されています。参照方法は、こちらからご確認ください。
Japan SAS Discussionページに質問や意見(メッセージ)を投稿/返信する方法を簡単にご説明します。