viernes, 7 de agosto de 2015

Trasformado variables numéricas a carácter


Algo con lo que siempre nos enfrentamos cuando programamos en SAS es al casting de valores numéricos a carácter o de carácter a numéricos, en SAS EG  existen funciones  que nos permiten hacer este tipo de conversiones:

INPUT = Carácter a numérico

Mi_variable = input (variable_cadea, formato );

PUT =  Numérico a carácter

mi_variable = put(variable_numerica, formato);

sábado, 1 de agosto de 2015

El uso del IFC y IFN


Estas funciones  SAS son sentencias de control que permiten  evaluar condiciones como el IF.. THEN, y devuelven un valor como resultado después de evaluar la condición

IFC = El valor que devuelve la función después de evaluar las condicional debe ser estrictamente una cadena de caracteres

IFN =  El valor que devuelve la función después de evaluar las condicional debe ser estrictamente una valor numérico


Sintaxis

IFC ( <condicion>,  <si se cumple>, <si no se cumple >)

Ejemplo:

data  ejemplo;
length estatus $10.;
do i=1 to 10;
edad= i;
end;
estatus= ifc ( i<=6, "aprobado", "reprobado")
run;

La salida es la siguiente

edad|marca
1 |reprobado
2 |reprobado
3 |reprobado
4 |reprobado
5 |reprobado
6 |reprobado
7 |aprobado
8 |aprobado
9 |aprobado
10 |aprobado

Como calcular la edad en SAS


Obtener una diferencia en años entre ellas es un tema baladí. Ejecutad el siguiente código SAS para calcular la diferencia en años:

data uno;
   format fecha1 ddmmyy10.;
     do fecha1= 9000 to today();
      output;
    end;
run;

data uno;
set uno;
   format fecha2 ddmmyy10.;
   fecha2="15MAY2014"d;

  edad = int((fecha2-fecha1)/365.25);
  if month(fecha1)=5 and day(fecha1)=15;
run;
Visualizad el conjunto de datos uno, la serie de edad asusta 28,28,27,25,24,24,… Está claro que algo falla. Hace ya tiempo que hablamos de ello en este mismo blog. Los ceros y los unos con los que guardan estas máquinas las cosas a veces nos juegan estas malas pasadas. Para evitar este problema os sugiero que empleéis la función de SAS YRDIF con la base ‘AGE’. Replicamos el ejemplo:

data uno;
  format fecha1 ddmmyy10.;
   do fecha1= 9000 to today();
  output;
   end;
run;

data uno;
 set uno;
 format fecha2 ddmmyy10.;
 fecha2="15MAY2014"d;
 edad = int(yrdif(fecha1,fecha2,'AGE'));
run;

data uno;
 set uno;
 if month(fecha1)=5 and day(fecha1)=15;
run;


Uso del MERGE en SAS

A continuación se presentan los diferentes tipos de union de Tablas en SAS,