1

proc tabulateを管理して、統計の代わりに値が欠落している変数の値を表示するにはどうすればよいですか?ありがとう!

たとえば、symの値を表示したいと思います。値'x'または欠落している値を取ります。どうすればいいですか?

サンプルコード:

data test;
input tx mod bm $ yr sym $;
datalines;
1   1   a   0   x
1   2   a   0   x
1   3   a   0   x
2   1   a   0   x
2   2   a   0   x
2   3   a   0   x
3   1   a   0   
3   2   a   0   
3   3   a   0   x
1   1   b   0   x
1   2   b   0   
1   3   b   0   
1   4   b   0   
1   5   b   0   
2   1   b   0   
2   2   b   0   
2   3   b   0   
2   4   b   0   
2   5   b   0   
3   1   b   0   x
3   2   b   0   
3   3   b   0   
1   1   c   0   
1   2   c   0   x
1   3   c   0   
2   1   c   0   
2   2   c   0   
2   3   c   0   
3   1   c   0   
3   2   c   0   
3   3   c   0   
1   3   a   1   x
2   3   a   1   
3   3   a   1   
1   3   b   1   
2   3   b   1   
3   3   b   1   
1   3   c   1   x
2   3   c   1   
3   3   c   1   
;
run;

proc tabulate data=test;
class yr bm tx mod ;
var sym;
table yr*bm, tx*mod;
run;

ファイナルテーブルはこんな感じにしたいと思います。 ありがとう!

4

1 に答える 1

2
proc tabulate data=test;
class tx mod bm  yr sym;
table yr*bm, tx*mod*sym*n;
run;

これにより、SYM=x ごとに 1 つが得られます (n=missing であるため)。これにより、SYM=missing の行が非表示になるため、サンプル テーブルから全体的にいくつかの値が失われます。(1 = 'x' を簡単に定義するフォーマットで列をフォーマットできます)。

proc tabulate data=test;
class tx mod bm  yr;
class sym /missing;
table yr*bm, tx*mod*sym=' '*n;
run;

これにより、4 つの主要な変数のすべての組み合わせが得られますが、欠落している syms が独自の列として含まれています。

ケーキを食べたい場合は、SYM を数値変数に再定義して、VAR として使用できるようにする必要があります。

proc format;
invalue ISYM
x=1
;
value FSYM
1='x';
quit;

data test;
infile datalines truncover;
input tx mod bm $ yr sym :ISYM.;
format sym FSYM.;
datalines;
1   1   a   0   x
1   2   a   0   x
1   3   a   0   x
... more lines ...
;
run;

proc tabulate data=test;
class tx mod bm  yr;
var sym;
table yr*bm, tx*mod*sym*sum*f=FSYM.;
run;

これらはすべて、これらが一意の組み合わせ行であることを前提としています。yr*bm*tx*mod の倍数を使い始めると、期待した結果が得られないため、ここで問題が発生します (合計 1+1+1=3 では 'x' が得られません)。

于 2013-02-21T20:44:12.513 に答える