¿Cómo aplicar eficazmente sus propios nombres de columna sin tener que renombrar manualmente cada variable, especialmente si el archivo contiene docenas? Aquí hay dos enfoques: el método rápido para unas pocas variables, y la automatización completa para archivos grandes.
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;
Paso 2: Renombrado manual
Utilice PROC DATASETS para modificar los nombres sin volver a leer todos los datos (muy rápido incluso en grandes volúmenes).
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. El Método Automatizado (Renombrado Dinámico)
Si tiene 50 o 100 columnas listadas en un documento externo, el método manual es tedioso y una fuente de errores. Aquí le mostramos cómo automatizar el proceso generando dinámicamente la instrucción RENAME.
El Concepto
Importar el archivo de datos con los nombres genéricos (VAR1, VAR2...).
Fase A: Crear la tabla de nombres
Copie su lista de columnas desde Word y péguela en el siguiente código:
/* 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;
Fase B: Generar el script de renombrado
Este código recorre la lista de nombres y construye una cadena de caracteres del tipo: 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 */
Si su archivo es complejo (fechas específicas, formatos numéricos particulares), PROC IMPORT a veces puede adivinar incorrectamente los tipos de datos. En este caso, el método más robusto es escribir un paso DATA clásico.
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;
Para un gran número de columnas: Automatización a través de Macro-Variable.
Para un control preciso de los tipos: DATA Step con INPUT.
Wichtiger Haftungsausschluss
Die auf WeAreCAS.eu bereitgestellten Codes und Beispiele dienen Lehrzwecken. Es ist zwingend erforderlich, sie nicht blind in Ihre Produktionsumgebungen zu kopieren. Der beste Ansatz besteht darin, die Logik zu verstehen, bevor sie angewendet wird. Wir empfehlen dringend, diese Skripte in einer Testumgebung (Sandbox/Dev) zu testen. WeAreCAS übernimmt keine Verantwortung für mögliche Auswirkungen oder Datenverluste auf Ihren Systemen.
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.