3

質問の言い方がよくわかりませんが、ここに行きます。入力データセットが見つからないか存在しない場合でも、SAS で目的のデータセットを作成できるかどうかを確認したいと思います。

そのため、以下のコードを見ると、ダミーの入力データセットが存在しなくても、指定された属性でテスト データセットを作成したいと考えています。これは可能ですか?

前もって感謝します。

Data test;  
 set dummy;
 label subjid = "Subject ID" 
      name   = "Name"
      age    = "Age";
Run;
4

4 に答える 4

3

データセットが存在するかどうかを確認し、存在する場合はデータ ステップを実行し、存在しない場合は空のデータセットを作成します。最初にダミー データセットの空のバージョンを作成し、最初のデータセットが存在するかどうかに応じて、どちらか一方から読み取る方が簡単な場合があります。

%macro ds_create(dsn);
%if %sysfunc(exist(&dsn.)) %then %do;
    data test;
    set &dsn.;
    run;
%end;
%else %do;
    data test;
    attrib 
        subjid  length=$20  label="Subject ID"
        name    length=$20  label="Name"
        age     length=8   label="Age";
    stop;
    run;
%end;
%mend ds_create;

%ds_create(dummy);
于 2013-03-08T15:35:51.520 に答える
1

PROC APPEND は、ここでの別のソリューションです。可変長やフォーマットを定義する必要があります。

Data test;
label subjid = "Subject ID" 
      name   = "Name"
      age    = "Age";
length subjID 8 name $20 age 3;
stop;
Run;

proc append base=dummy data=test force;
run;

これにより、ダミーにゼロ行が追加され、必要に応じて作成されます。ラベルを取得しようとしている場合は、この手順の後に PROC DATASETS でそれを行うことをお勧めします (DUMMY が既に存在する場合、ラベルが適用されるとは思わないため)。

于 2013-03-08T16:47:21.600 に答える
0

キースの答えは良いものです。テストテーブルを作成するための代替方法:

proc sql;
create table test 
    ( subjid char(20) label="Subject ID" 
        ,name char(20) label="Name"
        ,age num label="Age"
    );
quit;
于 2013-03-08T16:02:16.503 に答える
0
data TEST;
  attrib SUBJID  length=$20  label="Subject ID"
         NAME    length=$20  label="Name"
         AGE     length=8    label="Age";
  %sysfunc(ifc(%sysfunc(exist(DUMMY)), set DUMMY, stop));
run;
于 2013-12-07T09:33:06.827 に答える