13

SAS で複数のデータセットを連結しようとしていますが、個々のデータセット名に関する情報を最終的に積み重ねられたデータセットに格納する方法を探しています。

たとえば。初期データセットは「my_data_1」、「abc」、「xyz」で、それぞれ列「var_1」と「var_2」があります。

列「var_1」、「var_2」、および「var_3」を含む「最終」データセットを作成したいと考えています。ここで、「var_3」には、特定の行がどのデータセットから来たかに応じて、値「my_data_1」、「abc」、または「xyz」が含まれます。

(これを行うための厄介な解決策があります。つまり、テーブル名をすべての個々のデータセットに追加の変数として追加します。しかし、スタックするテーブルが約 100 あり、これを行う効率的な方法を探しています。)

4

2 に答える 2

34

SAS 9.2 以降を使用している場合は、INDSNAME オプションがあります http://support.sas.com/kb/34/513.html

そう:

data final;
format dsname datasetname $20.; *something equal to or longer than the longest dataset name including the library and dot;
set my_data_1 abc xyc indsname=dsname;
datasetname=dsname;
run;
于 2012-08-28T14:23:25.403 に答える
10

in各データセットを設定するときは、次のステートメントを使用します。

data final;
 set my_data_1(in=a) abc(in=b) xyc(in=c);
 if a then var_3='my_data_1';
 if b then var_3='abc';
 if c then var_3='xyz';
run;
于 2012-08-27T14:49:10.610 に答える