2017-11-22 6 views
0

ich einen Datensatz haben, die ‚Faktor‘ Werte und entsprechende ‚Antwort‘ Werte enthält:SAS PROC SQL - verketten Variablenwerte in einen einzigen Wert von Gruppe

data inTable; 
    input fact $ val $; 
    datalines; 
    a 1 
    a 2 
    a 3 
    b 4 
    b 5 
    b 6 
    c 7 
    d 8 
    e 9 
    e 10 
    f 11 
; 
run; 

I Antwortoptionen um den Faktor aggregieren möchten, dh ich brauche

desired output table

ich sehr gut kennen zu lernen, wie diese in einem Daten Schritt zur Implementierung einer Schleife durch Werte ausgeführt wird und die Anwendung CATX (geschrieben here). Aber kann ich das gleiche mit PROC SQL tun, mit einer Kombination von GROUP BY und einem Zeichen analog von SUM() oder CATX()?

Vielen Dank für Hilfe,

Dmitry

Antwort

2

Der Daten Schritt ist das geeignete Werkzeug in SAS verwenden, wenn Sie jede Art von Logik anwenden möchten, die viele Werte aus früheren Reihen trägt.

Jede SQL-Lösung wäre extrem unhandlich - Sie müssten die Eingabetabelle n-mal mit sich selbst verbinden, wobei n die maximale Anzahl verschiedener Werte für jeden Ihrer Faktoren ist und Sie auch einen sequenziellen Schlüssel definieren müssen Beibehalten der Zeilenreihenfolge, die für den Join verwendet werden soll.

Eine Liste von Aggregationsfunktionen Sie in proc sql verfügbar ist hier verwenden können: http://support.sas.com/kb/25/279.html

Obwohl einige von ihnen mit Zeichenvariablen arbeiten, gibt es keine Aggregationsfunktion für die String-Verkettung.

+0

'MIN()', 'MAX()' und 'COUNT()' funktionieren mit Zeichenvariablen. – Tom