(※今回は「ALTER TABLE」が主役なので、PROC DATASETS の説明はあんまりしてません)
PROC DATASETS を使うと、オブザベーションを読み込むことなく直接データセットの変数属性を変えることができますが、PROC SQL の「ALTER TABLE」を使っても同様のことができます。
構文
PROC SQL;
ALTER TABLE データセット名
MODIFY 変数属性を変更する文
ADD 追加する変数と属性を指定
DROP 削除する変数を指定
;
QUIT;
|
📝 注意
文字変数を元の LENGTH より短く変更してしまい文字切れしてしまったり、変数を誤って削除してしまったり、という事があり得るので取扱い注意。適宜バックアップをとっておく等ご対応下さい。
例
* Sample Data ;
data DT1; V1 = 1; V2 = 2; V3 = 3; run; proc sql; alter table DT1 modify V1 label="aaa" format=yymmdd10. , V2 label="bbb" V5 num label="yyy" format=yymmdd10. drop V4, V5; quit; |
一応、ADDでやっていることを少し補足しておきます。
add V4 char(10) label="xxx" ,
V5 num label="yyy" format=yymmdd10. |
・V4 という文字変数を長さ10で、変数ラベルを"xxx"で追加
・V5 という数値変数で、変数ラベルを"yyy"、formatをyymmdd10で追加
ALTER TABLE でしか出来ない事
「変数追加」や「変数削除」は ALTER TABLE だけ。PROC DATASETS は出来ない(はず)
proc sql;
alter table DT1
add V4 char(10)
drop V4;
quit;
|
また、LENGTH の変更も ALTER TABLE でしか出来ません。
PROC DATASETS でしか出来ない事
「変数名の変更」は PROC DATASETS だけ。PROC SQL の ALTER TABLE は出来ない(はず)
proc datasets lib=WORK nolist;
modify DT1;
rename V2=V10;
run;
quit;
|
ちなみに、どちらの方法も変数の型(数値・文字)を変更することはできないのであしからず。
0 件のコメント:
コメントを投稿