¿Variables acumulativas? ¿Variables acumuladoras? ¿Variables de acumulación?
Más allá de las sutilezas del lenguaje, que puede variar en los distintos países y en distintas áreas de conocimiento, es posible que las necesitemos calcular.
En este Tip te ofrecemos algunos ejemplos de cómo hacerlo.
/****************************************************************************/
/* Uso de la sentencia RETAIN para crear variables acumulativas */
/****************************************************************************/
/*-------------------*/
/* inicio del código */
/*-------------------*/
/*------------------------------------------------------*/
/* Para comprobar el efecto de Retain es aconsejable */
/* comentar las sentencias que lo incluyen. */
/*------------------------------------------------------*/
data test1;
infile DATALINES dsd missover;
input varnum1 varnum2;
cards;
1, 0.5
0.1, 4
7, 8
1, 10
;
data test_acumula_tradicional;
set work.test1;
retain acum_varnum1 0 acum_varnum2 100; /* crea las variables acumuladoras 'acum_varnum1' y 'acum_varnum2'
y las inicializa con los valores 0 y 100 respectivamente */
acum_varnum1=Sum(acum_varnum1, varnum1); /* Atención: ¡la función 'Sum' ignora los missings! */
acum_varnum2=Sum(acum_varnum2, varnum2);
run;
data test_acumula_actual;
set work.test1;
retain acum_varnum2 100; /* se necesita usar 'Retain' para la variable 'acum_varnum2' porque el valor
inicial no es cero; si el valor inicial fuera cero esta sentencia no sería necesaria */
acum_varnum1 + varnum1; /* no es necesario usar 'Retain' porque esta sentencia es un método abreviado que
da el mismo resultado que el programa anterior, ¡todo en una única sentencia! */
acum_varnum2 + varnum2;
run;
/*-------------------*/
/* fin del código */
/*-------------------*/
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.