Publicado el :

Sans titre

Este código también está disponible en: Deutsch English Français
En espera de validación
El acceso a datos es una tarea fundamental en la programación SAS©. Esta guía cubre la lectura de archivos externos a través de la instrucción INFILE y la escritura a través de la instrucción FILE, especificando directamente la ruta física o utilizando filerefs para una referencia indirecta. También se presenta la gestión eficiente de múltiples archivos mediante la asignación de filerefs a ubicaciones de almacenamiento agregadas. Se enumeran métodos de acceso avanzados como CATALOG, DATAURL, FTP, Hadoop, SOCKET, URL y WebDAV. Una sección está dedicada a la lectura de datos binarios utilizando informats SAS© específicos, haciendo hincapié en los parámetros RECFM y LRECL para datos binarios por columna. Finalmente, se integran ejemplos para optimizar la carga de datos en CAS con el formato DVR.
Análisis de datos

Type : MIXTE


Los ejemplos utilizan datos generados (datalines) para las demostraciones CAS, pero otros ejemplos dependen de archivos externos no creados en el código (marcados external_data_not_found: 1).

1 Bloque de código
DATA STEP
Explicación :
Este ejemplo muestra cómo leer datos brutos de un archivo externo usando las instrucciones INFILE e INPUT. INFILE es requerida porque los datos fuente provienen de un archivo de texto externo.
¡Copiado!
1DATA weight;
2 INFILE or
3 INPUT PatientID $ Week1 Week8 Week16;
4 loss=Week1-Week16;
5RUN;
2 Bloque de código
DATA STEP
Explicación :
Especifica el archivo que contiene los datos de entrada directamente usando su nombre físico entre comillas.
¡Copiado!
1DATA weight;
2 INFILE 'input-file';
3 INPUT idno $ week1 week16;
4 loss=week1-week16;
5RUN;
3 Bloque de código
DATA STEP
Explicación :
Identifica el archivo al que la instrucción PUT escribe los datos. Este ejemplo muestra la escritura de condiciones basadas en una variable 'loss'.
¡Copiado!
1file 'output-file';
2DATA STATUS;
3 IF loss ge 5 and loss le 9 THEN
4 put idno loss 'AWARD STATUS=3';
5 ELSE IF loss ge 10 and loss le 14 THEN
6 put idno loss 'AWARD STATUS=2';
7 ELSE IF loss ge 15 THEN
8 put idno loss 'AWARD STATUS=1';
9RUN;
4 Bloque de código
%INCLUDE statement
Explicación :
Permite incorporar instrucciones o datos brutos de otro archivo en su trabajo SAS y ejecutarlos.
¡Copiado!
1%include 'source-file';
5 Bloque de código
DATA STEP / FILENAME statement
Explicación :
Asigna un fileref 'mydata' a un archivo de entrada, luego usa este fileref en la instrucción INFILE para leer los datos.
¡Copiado!
1filename mydata 'input-file';
2DATA weight;
3 INFILE mydata;
4 INPUT idno $ week1 week16;
5 loss=week1-week16;
6RUN;
6 Bloque de código
PROC IMPORT / FILENAME statement
Explicación :
Asigna un fileref 'mydata' a un archivo de entrada, luego usa PROC IMPORT para importar los datos y PROC PRINT para mostrarlos.
¡Copiado!
1filename mydata 'input-file';
2PROC IMPORT datafile=mydata
3 out=shoes dbms=dlm replace;
4RUN;
5PROC PRINT DATA=shoes; RUN;
7 Bloque de código
DATA STEP / FILENAME statement
Explicación :
Asigna un fileref 'myreport' a un archivo de salida y un fileref 'mydata' a un archivo de entrada, luego lee los datos para crear un nuevo conjunto de datos.
¡Copiado!
1filename myreport 'output-file';
2DATA myreport;
3 INFILE mydata;
4 INPUT idno $ week1 week16;
5 loss=week1-week16;
6RUN;
8 Bloque de código
PROC EXPORT Data
Explicación :
Exporta el conjunto de datos SASHELP.SHOES al archivo externo referenciado por 'myreport', usando un delimitador de espacio.
¡Copiado!
1PROC EXPORT DATA=sashelp.shoes
2 outfile=myreport dbms=dlm replace;
3 delimiter=' ';
4RUN;
9 Bloque de código
FILENAME statement
Explicación :
Asigna un fileref 'mypgm' a un archivo que contiene instrucciones de programa.
¡Copiado!
1filename mypgm 'source-file';
10 Bloque de código
FILENAME statement
Explicación :
Asigna un fileref 'myprinter' a un dispositivo de salida especificado por su tipo y las opciones de host.
¡Copiado!
1filename myprinter
2;
3 
11 Bloque de código
DATA STEP
Explicación :
Utiliza el fileref 'mydata' (previamente asignado) en la instrucción INFILE para leer los datos.
¡Copiado!
1DATA weight;
2 INFILE mydata;
3 INPUT idno $ week1 week16;
4 loss=week1-week16;
12 Bloque de código
DATA STEP
Explicación :
Utiliza el fileref 'myreport' (previamente asignado) en la instrucción FILE para escribir datos condicionalmente.
¡Copiado!
1file myreport;
2 IF loss ge 5 and loss le 9 THEN
3 put idno loss 'AWARD STATUS=3';
4 ELSE IF loss ge 10 and loss le 14 THEN
5 put idno loss 'AWARD STATUS=2';
6 ELSE IF loss ge 15 THEN
7 put idno loss 'AWARD STATUS=1';
8RUN;
13 Bloque de código
%INCLUDE statement
Explicación :
Incluye el contenido del archivo referenciado por 'mypgm' en el trabajo SAS.
¡Copiado!
1%include mypgm;
14 Bloque de código
FILENAME statement
Explicación :
Asigna un fileref 'mydir' a un directorio o PDS (Partitioned Data Set), permitiendo acceder eficientemente a múltiples archivos.
¡Copiado!
1filename mydir 'directory-or-PDS-name';
15 Bloque de código
DATA STEP
¡Copiado!
1DATA weight;
2 INFILE mydir(qrt1.DATA);
3 INPUT idno $ week1 week16;
4 loss=week1-week16;
5RUN;
16 Bloque de código
DATA STEP
¡Copiado!
1file mydir(awards);
2IF loss ge 5 THEN put idno loss
3 'AWARD STATUS=3';
4 ELSE IF loss ge 10
5 THEN put idno loss 'AWARD STATUS=2';
6 ELSE IF loss ge 15
7 THEN put idno loss 'AWARD STATUS=1';
8RUN;
17 Bloque de código
%INCLUDE statement
¡Copiado!
1%include mydir(whole.program);
18 Bloque de código
DATA STEP
¡Copiado!
1DATA out;
2 INFILE file-specification or path-to-file recfm=f lrecl=160;
3 INPUT var1;
4RUN;
19 Bloque de código
DATA STEP / PROC CASUTIL Data
¡Copiado!
1/* Préparation des données dans WORK */
2DATA maTableWork;
3 INPUT PatientID $ Week1 Week8 Week16;
4 DATALINES;
5P1 100 95 90
6P2 80 78 75
7P3 120 115 110
8;
9RUN;
10 
11/* Méthode standard - ne permet pas l'optimisation DVR directe */
12PROC CASUTIL;
13 load DATA=maTableWork casout="maTableCAS";
14QUIT;
20 Bloque de código
DATA STEP / PROC CAS Data
¡Copiado!
1/* Création d'une table temporaire SAS pour l'exemple */
2DATA somedata;
3 LENGTH id $8 name $20 value 8;
4 DO id = 1 to 10;
5 name = cats('Item', id);
6 value = mod(id, 3) * 100;
7 OUTPUT;
8 END;
9 /* Ajout de valeurs répétées pour montrer l'efficacité de DVR */
10 DO id = 11 to 20;
11 name = 'Repeated';
12 value = 50;
13 OUTPUT;
14 END;
15RUN;
16 
17PROC CAS;
18 /* Nettoyage préalable si nécessaire */
19 ACTION TABLE.droptable / name="somedata" caslib="casuser" quiet=true;
20
21 /* Chargement optimisé */
22 upload /
23 /* Récupération dynamique du chemin physique de la table SAS */
24 path="%sysfunc(pathname(work))/somedata.sas7bdat"
25
26 /* Configuration de la table de sortie CAS */
27 casout={
28 caslib="casuser"
29 name="somedata"
30 promote=true, /* Rendre la table globale */
31 memoryformat="DVR", /* Activation de la compression DVR */
32 replication=0 /* Ajuster la réplication selon les besoins */
33 }
34
35 /* Options d'importation supplémentaires */
36 importoptions={
37 filetype="BASESAS",
38 varcharConversion=17 /* Convertit les CHAR > 16 octets en VARCHAR */
39 }
40 ;
41QUIT;
42 
43/* Vérification du format de la table en CAS (optionnel) */
44PROC CASUTIL;
45 list tables caslib="casuser" level="memory";
46QUIT;
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.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved