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!
data cars;
set sashelp.cars (keep=Make Model Type Origin Drivetrain);
run;
1
2
DATA cars;
3
SET sashelp.cars (keep=Make Model Type Origin Drivetrain);
4
RUN;
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!
proc sql noprint;
select name into :varlist separated by ' '
from sashelp.vcolumn
where upcase(libname) eq 'WORK' and upcase(memname) eq 'CARS';
quit;
1
PROC SQL noprint;
2
select name into :varlist separated BY' '
3
from sashelp.vcolumn
4
where upcase(LIBNAME) eq 'WORK' and upcase(memname) eq 'CARS';
5
QUIT;
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!
data cars;
retain &varlist;
length Type $10;
set cars;
run;
1
DATA cars;
2
retain &varlist;
3
LENGTH Type $10;
4
SET cars;
5
RUN;
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
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.