El script presenta 7 casos de uso para la importación de datos textuales: lectura estándar CSV con la opción DSD, uso del modificador tilde (~) para la gestión avanzada de comillas, definición explícita de longitudes, uso de varios delimitadores simultáneos, definición del delimitador a través de una variable, lectura dinámica del delimitador desde los propios datos, y uso de una cadena de caracteres completa como separador (DLMSTR).
Análisis de datos
Type : CREATION_INTERNE
Los datos se incluyen directamente en el código a través de las instrucciones DATALINES y CARDS.
1 Bloque de código
DATA STEP Data
Explicación : Lectura de un formato CSV estándar. La opción `dlm=','` especifica la coma como separador y `dsd` (Delimiter Sensitive Data) maneja correctamente las comillas y los valores faltantes.
¡Copiado!
title '1.3.3a Delimited List Input Modifiers';
data base;
length lname $15;
infile datalines dlm=',' dsd;
input fname $ lname $ dob :mmddyy10.;
datalines;
'Sam','Johnson',12/15/1945
'Susan','Mc Callister',10/10/1983
run;
1
title '1.3.3a Delimited List Input Modifiers';
2
DATA base;
3
LENGTH lname $15;
4
INFILEDATALINES dlm=',' dsd;
5
INPUT fname $ lname $ dob :mmddyy10.;
6
DATALINES;
7
'Sam','Johnson',12/15/1945
8
'Susan','Mc Callister',10/10/1983
9
RUN;
2 Bloque de código
DATA STEP Data
Explicación : Uso del modificador `~` (tilde) en la instrucción INPUT. Aquí permite leer campos que pueden contener delimitadores (como la coma en 'Fresno, CA') respetando la estructura DSD.
¡Copiado!
title2 'Using the ~ Format Modifier';
data base;
length lname $15;
infile datalines dlm=',' dsd;
input fname $ lname $ birthloc $~15. dob :mmddyy10. ;
datalines;
'Sam','Johnson', 'Fresno, CA','12/15/1945'
'Susan','Mc Callister','Seattle, WA',10/10/1983
run;
1
title2 'Using the ~ Format Modifier';
2
DATA base;
3
LENGTH lname $15;
4
INFILEDATALINES dlm=',' dsd;
5
INPUT fname $ lname $ birthloc $~15. dob :mmddyy10. ;
6
DATALINES;
7
'Sam','Johnson', 'Fresno, CA','12/15/1945'
8
'Susan','Mc Callister','Seattle, WA',10/10/1983
9
RUN;
3 Bloque de código
DATA STEP Data
Explicación : Lectura donde la longitud de las variables se define previamente mediante la instrucción `LENGTH`, lo que permite un control preciso del almacenamiento sin modificadores en el INPUT.
¡Copiado!
title '1.3.3c Delimited List Input Modifiers';
/* ... */
data base;
length lname birthloc $15;
infile datalines dlm=',' dsd;
input fname $ lname $ birthloc $ dob :mmddyy10. ;
datalines;
/* Données ... */
run;
1
title '1.3.3c Delimited List Input Modifiers';
2
/* ... */
3
DATA base;
4
LENGTH lname birthloc $15;
5
INFILEDATALINES dlm=',' dsd;
6
INPUT fname $ lname $ birthloc $ dob :mmddyy10. ;
7
DATALINES;
8
/* Données ... */
9
RUN;
4 Bloque de código
DATA STEP Data
Explicación : Definición de varios delimitadores posibles para el mismo archivo. Aquí `dlm='/,'` indica que la barra oblicua O la coma pueden servir como separador.
¡Copiado!
title '1.3.3d Read delimited code with multiple delimiters';
data imports;
infile cards dlm='/,';
input id importcode $ value;
cards;
14,1,13
25/Q9,15
6,D/20
run;
1
title '1.3.3d Read delimited code with multiple delimiters';
2
DATA imports;
3
INFILECARDS dlm='/,';
4
INPUT id importcode $ value;
5
CARDS;
6
14,1,13
7
25/Q9,15
8
6,D/20
9
RUN;
5 Bloque de código
DATA STEP Data
Explicación : Uso de una variable (`dlmvar`) para pasar los delimitadores a la opción `dlm=` de la instrucción INFILE, ofreciendo más flexibilidad (ej: configuración dinámica).
¡Copiado!
title '1.3.3e Read delimited code with multiple delimiters';
title2 'Using a variable to specify the delimiter';
data imports;
retain dlmvar '/,';
infile cards dlm=dlmvar;
input id importcode $ value;
cards;
/* Données */
run;
1
title '1.3.3e Read delimited code with multiple delimiters';
2
title2 'Using a variable to specify the delimiter';
3
DATA imports;
4
retain dlmvar '/,';
5
INFILECARDS dlm=dlmvar;
6
INPUT id importcode $ value;
7
CARDS;
8
/* Données */
9
RUN;
6 Bloque de código
DATA STEP Data
Explicación : Técnica avanzada: lectura del primer carácter de la línea (`input dlmvar $1. @`) para determinar cuál es el delimitador específico de esa línea, y luego relectura de la línea (`infile cards dlm=dlmvar`) con ese delimitador. (Nota: El código fuente original contenía un artefacto ' @code_sas_json...' que ha sido limpiado aquí).
¡Copiado!
title '1.3.3f Read delimited code with multiple delimiters';
title2 'Reading the delimiter during execution';
data imports;
infile cards;
input dlmvar $1. @;
infile cards dlm=dlmvar;
input id importcode $ value;
cards;
,14,1,13
/25/Q9/15
~6~D~20
run;
1
title '1.3.3f Read delimited code with multiple delimiters';
2
title2 'Reading the delimiter during execution';
3
DATA imports;
4
INFILECARDS;
5
INPUT dlmvar $1. @;
6
INFILECARDS dlm=dlmvar;
7
INPUT id importcode $ value;
8
CARDS;
9
,14,1,13
10
/25/Q9/15
11
~6~D~20
12
RUN;
7 Bloque de código
DATA STEP Data
Explicación : Uso de la opción `DLMSTR` (Delimiter String) disponible en las versiones recientes de SAS, que permite definir una cadena de caracteres completa (aquí ',,/') como separador único, y no una lista de caracteres individuales.
¡Copiado!
title '1.3.3g Use a delimiter string';
data imports;
infile cards dlmstr=',,/';
input id importcode $ value;
cards;
14,,/1/,,/13
/* ... */
run;
1
title '1.3.3g Use a delimiter string';
2
DATA imports;
3
INFILECARDS dlmstr=',,/';
4
INPUT id importcode $ value;
5
CARDS;
6
14,,/1/,,/13
7
/* ... */
8
RUN;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.