lunes, 23 de septiembre de 2013

SAS Forum España 2013

Como todos los años por estas fechas, tiene lugar el SAS Forum España. Edición 2013.
Un foro de encuentro imprescindible para la comunidad de usuarios y partners de SAS.
Más información en el siguiente link:

SAS Forum España 2013


viernes, 20 de septiembre de 2013

Conversiones de variables SAS alfanuméricas a numéricas y viceversa (input y put)

A continuación mostramos ejemplos prácticos de los tipos de conversión que hay entre variables SAS alfanuméricas y numéricas, tanto por medio de una conversión automática, como utilizando las funciones INPUT y PUT:

1) Conversión formato alfanumérico a numérico:
  •     Conversión automática:
§Operación aritmética:
a = ‘03’; b = a +1; b = 3
§Operación condicional con valores numéricos:
a = ’03’; if a > 1 then …
§Función que acepta argumentos numéricos:

a = ‘03’; b = 3; c = sum (a,b); c = 3
  •    Función INPUT:       
varnum =     input(varcharformato-input);
   varchar = ‘32000’;  varnum = input(varchar, 5.) ; varnum = 32000
   varchar = ’32,000’: varnum = input(varchar, comma6.);    varnum = 32000
   varchar = ‘20131014’; varnum  = input(varchar, yymmd8.);   varnum = 1964

2) Conversión formato numérico a alfanumérico:
  •     Conversión automática:
§Operación de concatenación:
a = 3; b = ‘A’||a;   b = ‘A3’
§Función que acepta argumentos alfanuméricos:
a =  3 ; b = index(a, ‘3’);  
  •    Función PUT:       
varchar =     input(varnumformato-input);
   varnum =  100;  varchar =put(varnum, 5.) ; varchar = ‘100’
   varnum = 100 :  varchar = put(varnum, z5.); varchar = 00100
   varnum = 32000;  varchar = put(varnum, e8.); varchar = ‘3.2E+04’



martes, 3 de septiembre de 2013

Tablas de muestra y bucles en SAS

Con el siguiente ejemplo, se pretende dar un caso de generación de tablas SAS de muestra para pruebas, en este caso con 1000 registros y los tres tipos de estructuras iterativas disponibles en los pasos data de SAS. Bucles de tipo do valor_ini to valor_fin, do - until y do - while.


data muestra;
do i = 1 to 1000;
   campo = round(ranuni(1), .01); /* La función ranuni genera un valor aleatorio entre 0 y 1 */
   output;
end;
run;

data muestra;
i = 0;
do while (i < 1000);
   campo = round(ranuni(1), .01);
    i = i + 1;
output;
end;
run;

data muestra;
i = 0;
do until (i = 1000);
    campo = round(ranuni(1), .01);
    i = i + 1;
output;
end;
run;