Archivo

Archivo de Autor

Conferencia del Grupo de Usuarios de Jamaica

diciembre 5, 2009 Deja un comentario
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

Categorías:Noticias

Nuevo Foro para SAS Web Report Studio

noviembre 11, 2009 Deja un comentario
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

Categorías:Noticias

Proc Sort nodup vs Proc sort Nodupkey

octubre 16, 2009 Deja un comentario
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

Categorías:Programming

Ejemplo: Diseño de Experimentos usando Proc Anova

octubre 13, 2009 Deja un comentario
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

Categorías:Programming, Shorts, Stat

Como desahabilitar por código en EG la salida automática en HTML

octubre 7, 2009 Deja un comentario
Esta es una pregunta que muchos usuarios de Enterprise Guide se hacen todos los días. La forma oficial de hacerlo es a tráves de la barra de Tools\Options y desmarcar la opción que genera automáticamente los reportes.

En este post les muestro como hacerlo mediante código:

Para desahabilitarlo usen la siguiente sentencia:

ODS HTML(ID=EGHTML) close;

Y para restituir el ODS pueden reiniciar la sesión o usar la siguiente sentencia:

ODS HTML(ID=EGHTML) FILE=EGHTML;

SASludos,

Alberto

Exportando las Abreviaciones

octubre 1, 2009 Deja un comentario

Para los que no lo saben una abreviación en SAS es una palabra clave que tipeada en el Editor de SAS es substituida por una cadena de texto mucho más grande. Se podría ver como una especie de shortcut.

Ciertamente esto es beneficioso cuando necesitamos escribir procedimientos que son repetitivos o incluso procedimientos que son poco usuales y que tenemos que recurrir a la Ayuda para recordar las sentencias básicas.

Por ejemplo, todos mi projectos en Enterprise Guide son creados utilizando una estructura de archivos predenida en un directorio específico en la red de esta manera:

Z:\\Proyectos\SAS\Proj001

En cada programa que necesita una librería para referenciar ese directorio tengo que escribir:

Libname Proj001 “Z:\\Proyectos\SAS\Proj001″;

No sería más fácil escribir _Lib o #Lib y presionando la tecla Tab automáticamente obtuviera la siguiente línea de código:

Libname Projnnn “Z:\\Proyectos\SAS\Projnnn”;

donde sólo debo cambiar nnn por el número de proyecto en el que estoy trabajando?

Con las Abreviaciones de SAS puedes hacer esto! solo imagina guardar dentro de un shortcut o abreviación ese tedioso procedimiento (en mi caso lo son Proc Datasets y Proc SurveySelect)
que siempre tienes que recurrir a la Ayuda para recordar la síntaxis.

Aquí te explico brevemente como hacerlo:


Para los que usan SAS Base:

1) Seleccionen el menu Tools y hagan click en Add Abbreviation

2) La siguiente ventana debería aparecer:

3) En el campo Abbreviation coloque el nombre de la abreviación que desean asignar al código. Mi recomendación es que usen un character clave como # al inicio, p.e. #Print o #Lib etc…

4)En el campo inferior copien y peguen el texto que SAS va a pegar en el editor cuando llamen a esa abreviación.
Una vez creada la abreviación solo deben ir al editor y tipearla, una pequeña ventana debería aparecer y solo debe presionar la tecla TAB para que su código o txto aparezca en el editor.

Para los que usan Enterprise Guide es exactamente el mismo proceso, solo que deben buscar en el menu Code para EG4.1 o en el menu Program para EG4.2

Ahora bien, la finalidad de este post era explicarle como exportalas para poder compartirla con otros usuarios. Para esto deben ir al Menu correspondiente con su versión de SAS o EG y hacer click en Keyboard Macros o Macro Editor y posteriormente hacer click en Macros, allí se desplegará una ventana donde les permitira exportar sus abreviaciones.

No olviden seleccionarlas todas antes de exportarlas o tendrán que hacerlo una a una!

SASludos,

Alberto

Categorías:Programming, Shorts

Fundamentos de SAS

septiembre 17, 2009 2 comentarios
Conseguí una pequeña presentacion de 30 slides que escribí hace como 5 ó 6 años que contiene una introducción básica a SAS. Esta diseñada para Base SAS pero es 100% aplicable a EG.

La presentación está en el área de archivos del Google group.

SASludos,

Alberto

Categorías:Programming, Shorts

Títulos coloridos con bcolor y color

septiembre 15, 2009 Deja un comentario

Estas fastidiado de los títulos y pie de página en negro? Con los atributos bcolor (para cambiar el color de fondo) y color
puedes cambiar la apariencia de los mismos.

A continuacion un breve tip de como hacerlo

title h=9pt bcolor=yellow color=red ‘title h=9pt bcolor=yellow color=red’;
footnote h=5pt bcolor=blue color=white ‘footnote h=5pt bcolor=blue color=white’;

title2 h=7pt bcolor=red ‘title2 h=7pt bcolor=red ‘;
footnote2 h=7pt bcolor=green ‘footnote2 h=7pt bcolor=green’;
proc print data=sashelp.class(obs=1);run;


SASludos,
Alberto

Data sets para Ejemplos

septiembre 15, 2009 Deja un comentario
SAS Enterprise Guide y Base SAS vienen con un conjunto de data sets o tablas que puedes utilizar para desarrollar tus programas. Estos data sets se encuentran en la librería
SASHELP.

Sin temor a equivocarme SASHELP.CLASS es la más popular de todas ellas. A continuación tienen una lista de las tablas o data sets utilizados para desarrollar sus programas.

PRDSAL2 – 23040 obs y 11 variables
CITIDAY – 1069 obs y 11 variables
ELECTRIC – 48 obs y 16 variables
ORSALES – 912 obs y 8 variables
COMPANY – 48 obs y 8 variables
SHOES – 395 obs y 7 variables
HEART – 5209 obs y 17 variables

SASludos,

Alberto

Categorías:Sabías que..., Shorts

Muestreo Sistemático con SAS

septiembre 4, 2009 Deja un comentario
El muestreo sistemático consiste en la elección de una muestra a partir de los elementos de una lista según un orden determinado, o recorriendo la lista a partir de un número aleatorio determinado. Esta es la definición más sencilla de muestreo sistemático sin tener que profundizar mucho.

Un pequeño ejemplo de como realizar un muestreo sistemático usando el Proc SurveySelect.


Vamos a suponer que deseamos crear una muestra sistemática del data set sashelp.class y que contenga el 50% de la información. El código sería:

PROC SURVEYSELECT data=sashelp.class out=_sys_ method=sys samprate=0.5 OUTSORT=class_sorted;
control age;
run;

Donde,

Method=sys indica que la selección será sistemática
Samprate=0.5 indica que el tamaño de la muestra será del 50%
Outsort= es el nombre del data set ordenado por la variable utilizada en la sentencia CONTROL
Control= Esta opción específica la variable que deseamos utilizar para crear la muestra, así el data set es ordenado por esta variable para posteriormente hacer la selección sistemática.

Sin la opción control, la muestra será seleccionada en el orden en el que aparecen en originalmente los datos.

SASludos,

Alberto

Categorías:Programming, Shorts, Stat
Seguir

Get every new post delivered to your Inbox.