Dynamische Variablennamen in SAS
Gibt es eine Möglichkeit in SAS zum festlegen von dynamischen Variablen-Namen im code?
d.h. verwenden verschiedene Variablen, die auf verschiedenen Beobachtungen, die basierend auf dem Wert einer anderen variable?
Zum Beispiel, mein input-Daten gesetzt werden könnte:
Index Var1 Var2 Var3
1 78.3 54.7 79.8
3 67.2 56.2 12.3
2 65.3 45.2 98.1
1 56.2 49.7 11.3
1 67.2 98.2 98.6
Und ich möchten eine Spalte hinzufügen, die hält den Wert von Var*Index*.
D. H. der Ausgang, ich würde wollen würde:
Index Var1 Var2 Var3 Var_Index
1 78.3 54.7 79.8 78.3
3 67.2 56.2 12.3 12.3
2 65.3 45.2 98.1 45.2
1 56.2 49.7 11.3 56.2
1 67.2 98.2 98.6 67.2
Ich bin nicht in der Lage zu verwenden call symput
für diese zu arbeiten. Auch sollte ich erwähnen, dass mein eigentliches problem ist etwas komplizierter, und ich habe bereits eine chaotisch-brute-force-Methode, aber ich bin auf der Suche nach etwas reinigen.
Antwort sollte funktionieren, wenn Sie nur wollen, um den Wert zu speichern aus dem VAR-variable mit einem Namen mit der Endung der index-Nummer in var_index...wenn es mehr Variablen auf die Lösung, bitte aktualisieren Sie Ihre Frage
InformationsquelleAutor user997943 | 2012-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie erstellen ein array von Var1 - VarN, dann können Sie einfach Referenz den gespeicherten Wert in dem Index.
Der code sollte weiterhin funktionieren, wenn alle Variablen, die Sie wollen, beginnen Sie mit var_ (var: in meinem code bedeutet, dass alle Variablen beginnend mit 'var'). Wenn nicht, dann geben Sie den ersten und letzten Variablen in den array-Liste, getrennt durch '--', z.B. array-vars{*} a--z;
InformationsquelleAutor Longfish
Ich denke, die einfachste Lösung wäre die Verwendung VVALUEX Funktion. Es legt den Namen der variable mit dem index, und liefert dann als argument an die Funktion -
InformationsquelleAutor Mozan Sykol
Hätte es nicht auch ein data step-arbeiten?
Könnte ich etwas fehlt? aber dies sollte Ihnen das Ergebnis zu Ihrer Frage.
Siehe Keith code unten, wenn Sie haben, dass viele.
InformationsquelleAutor DataParadigms
Also, was Sie brauchen, ist VNAME () - Funktion.
InformationsquelleAutor vasja