Tip publicado en SAScommunity

22 de enero de 2010
Tip sobre como leer eficientemente el nro de observaciones de un data set.




Leer más...

Conferencia del Grupo de Usuarios de Puerto Rico

5 de diciembre de 2009
La conferencia será el día 10 de diciembre en San Juan.

Para mayor información sobre la conferencia visita el siguiente link.

SASludos,

Alberto



Leer más...

Conferencia del Grupo de Usuarios de Jamaica

El día 8 de diciembre se llevará acabo la conferencia del Grupo de Usuarios SAS de Jamaica (SUGJA por sus siglas en inglés).

Visita el siguiente link para mayor sobre la agenda de esta conferencia.

SASludos,

Alberto




Leer más...

Nuevo Foro para SAS Web Report Studio

11 de noviembre de 2009
SAS support ha creado un nuevo foro para dar soporte a la creciente comunidad de usuarios y desarrolladores en SAS Web Report Studio.

Este es el link al foro:

http://support.sas.com/forums/forum.jspa?forumID=52

SASludos,

Alberto





Leer más...

Proc Sort nodup vs Proc sort Nodupkey

16 de octubre de 2009
Una pregunta que es my frecuente entre usuarios de SAS y especialmente en entrevistas de trabajos es:Cuál es la diferencia entre Proc Sort nodup y Proc Sort nodupkey?

La respuesta esperada sería decir que Nodup (Noduprecs) elimina las observaciones o filas duplicadas comparando todas la variables en el data set mientras que Nodupkey las elimina basada en las variables utilizadas en la sentencia BY.

Lamentablemente debo decirles que esto no es 100% correcto.


Contrariamente a lo que se cree, cuando se usa la opción Nodup SAS no tiene manera de saber sobre estas observaciones o filas duplicadas a menos que éstas, por suerte, se encuentren en secuencia contigua en el data set.

Veamos el siguiente ejemplo de Nodup usando las fechas de las Ligas ganadas por el FC Barcelona, fíjense que el año 1993 esta repetido 2 veces pero no en secuencia contigua:


data Ej_nodup;
input liga $ equipo $ yyyy ;
cards;
LaLiga Barsa 1993
LaLiga Barsa 1991
LaLiga Barsa 1992
LaLiga Barsa 1993
;
Proc sort nodup data=Ej_nodup ;
by liga equipo;
run;
proc print;run;

Obs liga equipo yyyy
1 LaLiga Barsa 1993
2 LaLiga Barsa 1991
3 LaLiga Barsa 1992
4 LaLiga Barsa 1993

Como podrán haber detallado, la opción nodup no eliminó la observación repetida.

Veamos ahora este ejemplo con las observaciones repetidas en secuencia contigua:

data Ej_nodup;
input liga $ equipo $ yyyy ;
cards;
LaLiga Barsa 1993
LaLiga Barsa 1993
LaLiga Barsa 1991
LaLiga Barsa 1992
;

Proc sort nodup data=Ej_nodup ;
by liga equipo;
run;
proc print;run;

Obs liga equipo yyyy
1 LaLiga Barsa 1993
2 LaLiga Barsa 1991
3 LaLiga Barsa 1992

Ahora sí eliminó la observación duplicada debido a que se encontraban de forma contigua.

Si para el mismo ejemplo utilizamos la opción Nodupkey solo nos quedará una sola observación con la combinación de la sentencia BY

data Ej_nodupkey;
input liga $ equipo $ yyyy ;
cards;
LaLiga Barsa 1993
LaLiga Barsa 1993
LaLiga Barsa 1991
LaLiga Barsa 1992
;

Proc sort nodupkey data=Ej_nodupkey ;
by liga equipo;
run;
proc print;run;

Obs liga equipo yyyy
1 LaLiga Barsa 1993

Agregando la variable yyyy a lista BY estaríamos obteniendo el resultado deseado:

data Ej_nodupkey;
input liga $ equipo $ yyyy ;
cards;
LaLiga Barsa 1993
LaLiga Barsa 1993
LaLiga Barsa 1991
LaLiga Barsa 1992
;

Proc sort nodupkey data=Ej_nodupkey ;
by liga equipo yyyy;
run;
proc print;run;

Obs liga equipo yyyy
1 LaLiga Barsa 1991
2 LaLiga Barsa 1992
3 LaLiga Barsa 1993


Para finalizar este post, mi recomendación es siempre usar la opción Nodupkey.

SASludos,

Alberto



Leer más...

Ejemplo: Diseño de Experimentos usando Proc Anova

13 de octubre de 2009
Un pequeño ejemplo para algunos que me han preguntado como realizar un diseño de experimentos (DOE por sus siglas en inglés) usando SAS/STAT.

Para los que no lo saben SAS tiene su propio modulo de DOE con interfaz gráfica (Base SAS) que contiene una gran cantidad de diseños pre-establecidos. Para los humanos comunes como nosotros que solo tenemos el STAT exiten 2 procedimientos el ANOVA y GLM para llevar acabo este tipo de análisis.

En este ejemplo solo contiene el Proc ANOVA que solo debe ser usado cuando el diseño es balanceado.

Para aquellos que tienen el Montgomery de Diseño de Experimentos (la edición verde) es el ejemplo de la pág 219.



data montgomery_pag219;
do replica=1 to 3;
do catalizador=-1 to 1 by 2;
do reactivo=-1 to 1 by 2;
input y @; output;
end;
end;
end;
cards;
28 36 18 31
25 32 19 30
27 32 23 29
;

proc anova data=montgomery_pag219;
class reactivo catalizador;
model y= reactivo catalizador reactivo*catalizador;
run;

SASludos,

Alberto


Leer más...