変数名を省略する便利な書き方をまとめます。
*** サンプルデータ ;
data DT1;
A1 = 1;
A2 = 1;
A3 = 1;
B = "abc";
C = 2;
run; |
*** A1~A3まで連番になってる変数 ;
data DT2;
set DT1;
keep A1
- A3;
/* 「keep A3 - A1」と逆にしてもok */
run;
*** 変数名がAで始まる変数 ;
data DT3;
set DT1;
keep A
: ;
run;
*** A3からCまで順番に格納されてる変数 ;
data DT4;
set DT1;
keep A3
-- C;
run;
*** A3からCまで順番に格納されてる変数の中での数値変数 ;
data DT5;
set DT1;
keep A3
-numeric- C;
run;
*** A3からCまで順番に格納されてる変数の中での文字変数 ;
data DT6;
set DT1;
keep A3
-character- C;
run;
*** 数値変数のみ ;
data DT6;
set DT1;
keep
_numeric_;
run;
*** 文字変数のみ ;
data DT6;
set DT1;
keep _character_;
run;
*** 全変数 ;
data DT6;
set DT1;
keep _all_;
run;
今回はKEEPステートメントでの例でしたが、さまざまなステートメントで使えます。
気をつけなきゃいけないのは以下のように関数中に指定するケース。
× sum(A1-A3);
○ sum(of A1-A3);
「A1-A3」だと引き算の意味になってしまう!この場合は必ず「
of」を先頭につけましょう。
あとは、変数の格納順をコロコロ変えるかもしれないデータセットに対して
「
A3 -- C」、 「
A3 -numeric- C」、 「
A3 -character- C」といった省略文を書くのは避けましょう。
(変数の格納順が変わるたびに、この省略文を修正しなきゃいけなくなって、プログラムとして不安定になる)