Veröffentlicht am :

Ändern der Variablenlänge unter Beibehaltung der Reihenfolge

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Skript illustriert ein häufiges Problem: Das Ändern der Länge einer Variablen ändert oft deren Position in der Tabelle (sie landet am Ende). Die vorgeschlagene Lösung verwendet Metadaten (SASHELP.VCOLUMN), um die ursprüngliche Reihenfolge der Variablen zu erfassen, und verwendet dann die RETAIN-Anweisung in einem DATA-Schritt in Kombination mit einer LENGTH-Anweisung, um die Formatänderung anzuwenden und gleichzeitig die durch die Makrovariable definierte Spaltenreihenfolge zu erzwingen.
Datenanalyse

Type : SASHELP


Verwendet die Beispieltabelle 'sashelp.cars' als Datenquelle und 'sashelp.vcolumn' für Strukturmetadaten.

1 Codeblock
DATA STEP Data
Erklärung :
Erstellung einer Arbeitstabelle 'cars' (in der WORK-Bibliothek) aus einer Untermenge von Spalten von 'sashelp.cars'.
Kopiert!
1 
2DATA cars;
3SET sashelp.cars (keep=Make Model Type Origin Drivetrain);
4RUN;
5 
2 Codeblock
PROC SQL
Erklärung :
Extrahieren der Liste der Variablennamen aus der Tabelle 'cars' aus dem Datenwörterbuch (VCOLUMN), gespeichert in der Makrovariablen ':varlist', um die aktuelle Reihenfolge beizubehalten.
Kopiert!
1PROC SQL noprint;
2 select name into :varlist separated BY ' '
3 from sashelp.vcolumn
4 where upcase(LIBNAME) eq 'WORK' and upcase(memname) eq 'CARS';
5QUIT;
3 Codeblock
DATA STEP Data
Erklärung :
Wiederherstellung der Tabelle 'cars'. Die RETAIN-Anweisung (unter Verwendung der zuvor abgerufenen Variablenliste) erzwingt die Spaltenreihenfolge. Die LENGTH-Anweisung ändert die Größe der Variablen 'Type' von 8 auf 10 Zeichen.
Kopiert!
1DATA cars;
2retain &varlist;
3LENGTH Type $10;
4 SET cars;
5RUN;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Author(s) : Nicolas DUPONT, Date : 22/04/2017