2013-10-19 98 views
0

我正在尋找一種優雅的方式(或者,如果失敗了,這種方法不雅)來計算不包含當前記錄的平均值。所以,如果我有30個觀測值,我會得到30個不同的平均值。每個值將是其他29個值的平均值。SAS:計算不包括當前觀察值的平均值

從這個構成數據中,我想創建5個新的觀察值,其中A,B和C的平均值不包括他們自己的數據。

 A B C 
Albert 12 4 6 
Bob  14 7 12 
Clyde 6 7 11 
Dennis 9 11 7 
Earl 8 8 6 

我有一個模糊的想法,這將涉及循環內的proc sql。其他想法或方法表示讚賞。

回答

0

無需循環。使用SQL獲取每個變量的總和。沒有當前觀察的平均值是(總和 - 值)/(n-1)

data test; 
input NAME $ A B C; 
datalines; 
Albert 12 4 6 
Bob  14 7 12 
Clyde 6 7 11 
Dennis 9 11 7 
Earl 8 8 6 
; 
run; 

proc sql noprint; 
select count(*), 
     sum(A), 
     sum(B), 
     sum(C) 
    into :n, 
     :a, 
     :b, 
     :c 
    from test; 
quit; 

data test2; 
set test; 
Ave_A = (&a - a)/(&n-1); 
Ave_B = (&b - b)/(&n-1); 
Ave_C = (&c - c)/(&n-1); 
run; 
+0

感謝您的支持。我有一種感覺,有一個簡單的方法來解決這個問題。 – Oliver