2017-02-20 9 views
0

Ich habe drei Tabellen, die aussehen wie folgt aussehen:Zelle für Zelle durchschnittlich vier Tabellen in 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 

Ich möchte den Durchschnitt dieser Tabellen auf einer Zelle gegen in SAS zu finden. So soll eine Ausgabe wie folgt aussehen:

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

So ist die erste Zelle würde beispielsweise wie folgt berechnet werden (1 + 2 + 3)/3 = 3

Im Moment ist völlig ratlos bin, wie um das zu tun, aber ich sehe Proc bedeutet und proc freq, die vielversprechend scheinen.

Vielen Dank für die Hilfe.

+0

Haben Sie [tag: sas-iml]? – Joe

+0

Stellt sich heraus, dass ich (brauchte eine Weile, um es herauszufinden - Entschuldigung) – MRR

Antwort

1

In SAS/IML ist das trivial.

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; 

In SQL oder Base SAS es Wege gibt, um darüber zu gehen, auch, vorausgesetzt, Sie typo'ed die dritte Datensatz (sollte D F G D E F sein). Wenn Sie das nicht falsch gemacht haben, dann ist es schwieriger.

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; 

Die SQL-Lösung ist ein bisschen mehr schreiben, aber letztlich ähnlich (und Sie können den for_d Schritt überspringen). Verbinden Sie einfach a, b, c und berechnen Sie den Mittelwert in der Abfrage.

+0

Brilliant. Ich habe tatsächlich einen Tippfehler, aber danke für die volle Antwort. Du hast mir gerade Stunden damit erspart, das alleine zu lösen. Vielen Dank! – MRR

Verwandte Themen