6

現在、200 個の変数を持つデータセットがあります。これらの変数から、100 個の新しい変数を作成しました。ここで、元の 200 個の変数を削除したいと思います。どうやってやるの?

新しいデータセットに変数 3 ~ 200 をドロップする方法が少し良いでしょう。

私の質問があいまいでしたら申し訳ありませんが、基本的には --. 最初の変数が最初に呼び出され、最後の変数が最後に呼び出された場合、 (drop= first--last); を使用してその間のすべての変数を削除できます。

すべての応答に感謝します。

4

5 に答える 5

5

ほとんどのSASタスクと同様に、いくつかの選択肢があります。SASデータセットから変数を削除する最も簡単で安全な方法は、PROCSQLを使用することです。変数を名前でコンマで区切ってリストするだけです。

proc sql;
   alter table MYSASDATA
      drop name, age, address;
quit;

PROC SQLを使用してテーブルを変更すると、所定のデータセットから変数が削除されます。

別の手法は、DROP オプションを使用してデータセットを再作成することです。

data have;
   set have(drop=name age address);
run;

そしてさらに別の方法は、DROP ステートメントを使用することです:

data have;
   set have;
   drop name age address;
run;
于 2013-03-23T21:12:03.050 に答える
4

多くのオプション-「より安全」なものもあれば、安全性は低いがコーディングが容易なものもあります。まず、変数ID、PLNT、およびx1-x200のデータセットがあるとします。

data have;
id=0;
plnt=0;
array x[200];
do _t = 1 to dim(x);
x[_t]=0;
end;
run;

data want;
set have;
*... create new 100 variables ... ;
*option 1:
drop x1-x200; *this works when x1-x200 are numerically consecutive;
*option 2:
drop x1--x200; *this works when they are physically in order on the dataset - 
                only the first and last matter;
run;

*または、この方法で行います。これは、SQLALTERTABLEでも機能します。これが最も安全な方法です。;

proc sql;
select name into :droplist separated by ' ' from dictionary.columns
where libname='WORK' and memname='HAVE' and name not in ('ID','PRNT');
quit;

proc datasets lib=work;
modify want;
drop &droplist.;
quit;
于 2013-03-23T22:45:16.020 に答える
2

削除したいすべての変数に名前が付けられているため、すべて同じように始まる場合 ( old_var_1old_var_2、 ...、 などold_var_n)、これを行うことができます (ドロップ オプションのコロンに注意してください)。

data have;
set have(drop= old_var:);
run;
于 2013-03-24T16:19:46.640 に答える