Publicado el :
Programación SAS CREATION_INTERNE

Ejemplos: Bucles DO

Este código también está disponible en: Deutsch English Français
En espera de validación
Análisis funcional detallado de los bucles DO. Los bucles DO son estructuras de control de flujo utilizadas para ejecutar un grupo de instrucciones de manera repetitiva. Pueden ser iterativos (con un índice, una lista o una secuencia) o condicionales (mientras una condición sea verdadera o hasta que una condición se vuelva verdadera). Los ejemplos presentados cubren estas diferentes formas, demostrando su aplicación para la manipulación de datos, el cálculo de intereses y otros escenarios. Se enfatiza que la sintaxis y el comportamiento son idénticos ya sea que el paso DATA se ejecute en el servidor de cómputo SAS© o en el entorno CAS, aunque la ejecución en CAS a veces puede realizarse en un solo hilo si no se especifica ninguna tabla de entrada.
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 de cómputo SAS.
¡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
¡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
¡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
¡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
¡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 cas;
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.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved