2013-02-21 87 views
1

如何管理proc tabulate以顯示缺少值的變量值而不是統計值?謝謝!如何通過proc在sas中列表顯示變量值?

例如,我想顯示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; 

I want the final table to be like this. Thanks!

+0

你能舉一個你想要最終表的樣子嗎? – Joe 2013-02-21 17:52:07

回答

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

這就給了你那些每個SYM = X(由於n =丟失)。這隱藏了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')。

+0

太棒了!非常感謝喬! – Autumn 2013-02-21 21:35:36