2017-02-20 63 views
0

四個表細胞平均我有三個表看起來如下所示:細胞通過SAS

 A B C    A B C    A B C  
D 1 2 3  D 2 3 4   D 3 4 5 
E 4 5 6  E 5 6 7   E 6 7 8 
F 7 8 9  F 8 9 10  F 9 10 11 

我想找到這些表對細胞在SAS的平均通過細胞的基礎。所以輸出應如下所示:

 A B c 
D 2 3 4 
E 5 6 7 
F 8 9 10 

所以第一個單元格將例如如下(1 + 2 + 3)/ 3 = 3

目前我完全難住了有關如何計算要做到這一點,但我看着proc手段和proc freq,這似乎很有希望。

非常感謝您的幫助。

+0

你有[tag:sas-iml]嗎? – Joe

+0

原來我是這麼做的(花了一段時間才弄清楚 - 抱歉) – MRR

回答

1

在SAS/IML中,這是微不足道的。

proc iml; 
    a = {1 2 3,4 5 6,7 8 9}; 
    b = {2 3 4,5 6 7,8 9 10}; 
    c = {3 4 5,6 7 8,9 10 11}; 
    d = (a+b+c)/3; 
print a b c d; 
quit; 

在SQL或基地SAS有辦法去了解它,也假設你typo'ed第三個數據集(d F G應該是d電子網)。如果你沒有打錯,那就更難了。

data a; 
input ID $ a b c; 
datalines; 
D 1 2 3 
E 4 5 6 
F 7 8 9 
;;;; 
run; 

data b; 
input ID $ a b c; 
datalines; 
D 2 3 4 
E 5 6 7 
F 8 9 10 
;;; 
run; 

data c; 
input ID $ a b c; 
datalines; 
D 3 4 5 
E 6 7 8 
F 9 10 11 
;;;; 
run; 

data for_d; 
    set a b c; 
    by id; 
run; 

proc means data=for_d; 
    var a b c; 
    class ID; 
    output out=d mean=; 
run; 

的SQL的解決方案是多一點打字,但最終類似(並且可以跳過for_d步驟)。只需將a,b,c加在一起並計算查詢中的均值。

+0

太棒了。我確實有錯字,但感謝您的全面迴應。你爲我自己解決這個問題而節省了數小時。非常感謝! – MRR