foo
tableを入力として使用し、出力データセットのレコードと 1 対 1 で対応する新しい SAS データセットを生成したいと考えていますbar
。foo
デフォルトでから変数を削除したいのですが、 foo
(新しい変数を導出するために) のすべてのフィールドを使用可能にする必要があり、 foo
(明示的に指定されている場合) からのいくつかの変数を保持することも必要です。
現在、変数の明示的なリストを管理してdrop=
いますが、data-set-option 宣言の構文が長くて扱いにくいものになります。
DATA bar (drop=id data_value2);
set foo;
new_id = id;
data_value1 = data_value1; /* Explicitly included for clarity */
new_derived_data_value = data_value2 * 2; /* etc. */
format new_id $fmt_id.
data_value1 $fmt_dat.
new_derived_data_value $fmt_ddat.
;
RUN;
必要な出力テーブルには、フィールドdata_value1
、new_data
およびのみが必要ですnew_derived_data_value
。
と同じ効果を再現する最も構文的に簡潔な方法を探しています:
SELECT
id AS new_id
,data_value1
,data_value2 * 2 AS new_derived_data_value
FROM foo
DATA
データセット内で明示的に定義したものを除いて、入力データセットからすべての変数を削除するステップを作成するにはどうすればよいですか?
* 更新:aaa--hhh
型表記を使用することもできますが、変数の順序が時間の経過とともに変化する場合や、後で variable を保持したい場合は、これでも扱いにくい場合がありますddd
。