Wie können Sie Ihre eigenen Spaltennamen effektiv anwenden, ohne jede Variable manuell umbenennen zu müssen, insbesondere wenn die Datei Dutzende enthält? Hier sind zwei Ansätze: die schnelle Methode für einige Variablen und die vollständige Automatisierung für große Dateien.
FILENAME LOC DISK '/workspace/workbench/myorg/data/home/olddatatoimport.txt';
PROC IMPORT DATAFILE=LOC
DBMS=DLM
OUT=WORK.NEWDATA
REPLACE;
DELIMITER=','; /* ou '09'x pour tabulation */
GETNAMES=NO; /* Crucial : évite de perdre la 1ère ligne de données */
RUN;
1
FILENAME LOC DISK '/workspace/workbench/myorg/data/home/olddatatoimport.txt';
2
3
PROC IMPORT DATAFILE=LOC
4
DBMS=DLM
5
OUT=WORK.NEWDATA
6
REPLACE;
7
DELIMITER=','; /* ou '09'x pour tabulation */
8
GETNAMES=NO; /* Crucial : évite de perdre la 1ère ligne de données */
9
RUN;
Schritt 2: Manuelle Umbenennung
Verwenden Sie PROC DATASETS, um Namen zu ändern, ohne alle Daten erneut lesen zu müssen (sehr schnell, auch bei großen Datenmengen).
proc datasets library=WORK nolist;
modify NEWDATA;
rename
VAR1 = State
VAR2 = City
VAR3 = Population;
quit;
1
PROC DATASETS library=WORK nolist;
2
modify NEWDATA;
3
rename
4
VAR1 = State
5
VAR2 = City
6
VAR3 = Population;
7
QUIT;
2. Die automatisierte Methode (Dynamische Umbenennung)
Wenn Sie 50 oder 100 Spalten in einem externen Dokument aufgeführt haben, ist die manuelle Methode mühsam und fehleranfällig. Hier erfahren Sie, wie Sie den Prozess automatisieren, indem Sie die RENAME-Anweisung dynamisch generieren.
Das Konzept
Importieren Sie die Datendatei mit den generischen Namen (VAR1, VAR2...).
Phase A: Tabelle der Namen erstellen
Kopieren Sie Ihre Spaltenliste aus Word und fügen Sie sie in den folgenden Code ein:
/* Table contenant vos noms de colonnes dans l'ordre du fichier */
data column_names;
length new_name $32;
input new_name;
datalines;
State
City
ZipCode
Population
Revenue
/* ... collez votre liste ici ... */
;
run;
1
/* Table contenant vos noms de colonnes dans l'ordre du fichier */
2
DATA column_names;
3
LENGTH new_name $32;
4
INPUT new_name;
5
DATALINES;
6
State
7
City
8
ZipCode
9
Population
10
Revenue
11
/* ... collez votre liste ici ... */
12
;
13
RUN;
Phase B: Umbenennungsskript generieren
Dieser Code durchläuft die Liste der Namen und erstellt eine Zeichenkette des Typs: VAR1=State VAR2=City ...
data _null_;
set column_names end=last;
length rename_list $32000;
retain rename_list;
/* On concatène : "VAR" + numéro de ligne = "Nouveau Nom" */
/* cats('VAR', _n_) génère VAR1, VAR2, etc. basée sur le numéro de ligne */
rename_list = catx(' ', rename_list, catx('=', cats('VAR',_n_), new_name));
/* À la fin, on stocke tout dans une variable macro &PAIRES_RENAME */
if last then call symputx('PAIRES_RENAME', rename_list);
run;
/* Vérification dans le journal */
%put &PAIRES_RENAME;
1
DATA _null_;
2
SET column_names END=last;
3
4
LENGTH rename_list $32000;
5
retain rename_list;
6
7
/* On concatène : "VAR" + numéro de ligne = "Nouveau Nom" */
8
/* cats('VAR', _n_) génère VAR1, VAR2, etc. basée sur le numéro de ligne */
Wenn Ihre Datei komplex ist (spezifische Datumsangaben, besondere numerische Formate), kann PROC IMPORT manchmal Datentypen falsch erraten. In diesem Fall ist die robusteste Methode, einen klassischen DATA-Schritt zu schreiben.
data work.newdata;
infile '/workspace/workbench/myorg/data/home/olddatatoimport.txt'
dsd /* Gère les délimiteurs et les valeurs manquantes */
dlm=',' /* Délimiteur */
truncover; /* Évite les erreurs si une ligne est trop courte */
/* Définissez vos noms et types ici */
input
State :$2.
City :$50.
Population :best.
Revenue :comma10.;
run;
The codes and examples provided on WeAreCAS.eu are for educational purposes. It is imperative not to blindly copy-paste them into your production environments. The best approach is to understand the logic before applying it. We strongly recommend testing these scripts in a test environment (Sandbox/Dev). WeAreCAS accepts no responsibility for any impact or data loss on your systems.
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. WeAreCAS is an independent community site and is not affiliated with SAS Institute Inc.
This site uses technical and analytical cookies to improve your experience.
Read more.