2017-02-20 62 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