1

いくつかの回帰を実行したいのですが、各変数の非欠損観測の数を数えたいと思います。しかし、どの変数を使用するかはまだわかりません。うまくいかない次の解決策を思いつきました。何か助けはありますか?

ここでは基本的に、説明変数のそれぞれを変数に入れます。たとえば、var1 var 2 -> w1 = var1, w2= var2.
事前にいくつの変数があるかわからないことに注意してください。したがって、10 個の変数の余地を残しておきます。
次に、symput を使用して潜在的な変数を保存します。

data _null_;
cntw=countw(&parameters);
i = 1;
array w{10} $15.;
do while(i <= cntw);
w[i]= scan((&parameters"),i, ' ');
i = i +1;
end;
/* store a variable globally*/
do j=1 to 10;
call symput("explanVar"||left(put(j,3.)), w(j));
end;
run;

次のステップは、保存した変数を使用して proc sql を実行することです。変数が 10 個未満の場合は機能しません。

proc sql;
select count(&explanVar1), count(&explanVar2), 
 count(&explanVar3), count(&explanVar4), 
  count(&explanVar5), count(&explanVar6),
   count(&explanVar7), count(&explanVar8),
    count(&explanVar9), count(&explanVar10)
from estimation
;quit;

このコードは 10 個未満の変数で機能しますか?

4

2 に答える 2

0

SAS マクロについてはわかりませんが、SQL クエリは次の 2 つのメモで機能します。

1) COUNT() 関数の後に「COUNT() AS VAR1」などの識別子を付けないと、結果にフィールド ヘッダーがありません。それでよければ、気にしなくてもいいかもしれません。ただし、データをエクスポートする場合は、"...AS "MY_NAME" を追加して名前を付けると便利です。

2) 変数が 10 個未満の観測の場合、クエリは NULL 値を返します。クエリを実行しているテーブルに 10 個の変数 (10 個の個別のフィールド) 用のスペースがある限り、データが返されるため、持っているものですべての結果が得られなくても心配する必要はありません。

于 2013-11-01T22:34:27.177 に答える