Publicado el :
Manipulación de datos CREATION_INTERNE

Ejemplos: Bucles DO

Este código también está disponible en: Deutsch English
En espera de validación
Los bucles DO en SAS© permiten ejecutar repetidamente un grupo de instrucciones. Existen varias formas de bucles iterativos: simples, anidados para tratamientos complejos (por ejemplo, cálculo de intereses compuestos), DOLIST para iterar sobre una lista de valores, DO TO para especificar un valor final, y DO TO BY para definir un incremento específico. Los bucles condicionales como DO WHILE (ejecuta mientras una condición sea verdadera) y DO UNTIL (ejecuta hasta que una condición se vuelva verdadera) ofrecen un control preciso del flujo de ejecución. La sintaxis y el comportamiento de estos bucles son idénticos ya sea que el paso DATA se ejecute en el servidor SAS© Compute o en el entorno CAS.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o SASHELP.

1 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo utiliza una instrucción DO iterativa para decrementar repetidamente los valores de la variable 'balance' y escribir estos valores en el conjunto de datos de salida. El paso DATA se ejecuta en el servidor SAS Compute.
¡Copiado!
1DATA loan;
2 balance=10000;
3 DO payment_number=1 to 10;
4 balance=balance-1000;
5 OUTPUT;
6 END;
7RUN;
8PROC PRINT DATA=loan;
9RUN;
2 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo utiliza el mismo bucle DO iterativo para ejecutar el paso DATA en CAS y crear una tabla CAS de salida.
¡Copiado!
1cas casauto sessopts=(caslib='casuser');
2LIBNAME mylib cas;
3 
4DATA mylib.loan;
5 balance=10000;
6 DO payment_number=1 to 10;
7 balance=balance-1000;
8 OUTPUT;
9 END;
10RUN;
11PROC PRINT DATA=mylib.loan;
12RUN;
3 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo muestra cómo anidar un bucle DO dentro de otro para calcular el valor de una inversión de un año que rinde un 7.5% de interés anual, compuesto mensualmente.
¡Copiado!
1DATA earn;
2 Capital=2000;
3 DO Year=1 to 10;
4 DO Month=1 to 12;
5 Interest=Capital*(.075/12);
6 Capital+Interest;
7 OUTPUT;
8 END;
9 END;
10RUN;
11PROC PRINT DATA=earn; RUN;
4 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo utiliza la sintaxis DOLIST para iterar sobre una lista de valores, incluyendo valores únicos, múltiples, expresiones y secuencias con o sin variables.
¡Copiado!
1DATA do_list;
2 x=-5;
3 DO i=5, /*a single value*/
4 5, 4, /*multiple values*/
5 x + 10, /*an expression*/
6 80 to 90 BY 5, /*a sequence*/
7 60 to 40 BY x; /*a sequence with a variable*/
8 OUTPUT;
9 END;
10RUN;
11PROC PRINT DATA=do_list; RUN;
5 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo utiliza la sintaxis iterativa DO TO para incrementar repetidamente los valores de 'x'. El bucle también utiliza la instrucción OUTPUT para escribir cada valor incrementado de 'x' en el conjunto de datos de salida.
¡Copiado!
1DATA do_to;
2 x=0;
3 DO i=0 to 10;
4 x=x+1;
5 OUTPUT;
6 END;
7RUN;
8PROC PRINT DATA=do_to;
9RUN;
6 Bloque de código
DATA STEP Data
¡Copiado!
1DATA do_to_by;
2 x=0;
3 DO i=0 to 10 BY 2;
4 x=x+1;
5 OUTPUT;
6 END;
7RUN;
8PROC PRINT DATA=do_to_by;
9RUN;
7 Bloque de código
DATA STEP Data
¡Copiado!
1DATA loan;
2 balance=10000;
3 payment=0;
4 DO while (balance>0);
5 balance=balance-1000;
6 payment=payment+1;
7 OUTPUT;
8 END;
9RUN;
10PROC PRINT DATA=mylib.loan;
11RUN;
8 Bloque de código
DATA STEP Data
¡Copiado!
1LIBNAME mylib;
2 
3DATA mylib.loan;
4 balance=10000;
5 payment=0;
6 DO until (balance=0);
7 balance=balance-1000;
8 payment=payment+1;
9 OUTPUT;
10 END;
11RUN;
12PROC PRINT DATA=mylib.loan;
13RUN;
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.