Trucos SAS. Muestras aleatorias con y sin reemplazamiento

Un ejemplo típico de SAS, pero que creo que puede ayudar a conocer algunas funciones interesantes. Los ejemplos que planteo a continuación crean un dataset con 10.000 observaciones y, sobre él, vamos a crear dos subconjuntos de datos: dos muestras aleatorias del dataset de partida, una muestra sin reemplazamiento y otra muestra con reemplazamiento. Como siempre, creo un dataset de forma aleatoria que me sirve de base para plantearos el truco: ...

11 de mayo de 2009 · rvaquerizo

Trucos R. Leer de Excel vía RODBC

Un gran número de visitas que llegan a este sitio tienen que ver con la importación de datos. En este caso, he encontrado en YouTube un vídeo explicativo en el que nos indican de una forma muy sencilla cómo importar a R datos desde hojas Excel con el paquete RODBC: “Very easy”. Uno de mis siguientes proyectos es realizar vídeos de este tipo; bajo mi punto de vista, son muy prácticos e ilustrativos. Saludos.

12 de abril de 2009 · rvaquerizo

Trucos SAS. Variables `dummy` de una variable continua

“Dumificar” es crear variables dummy. Un verbo completamente inventado pero que todos los que os habéis enfrentado a la creación de una tabla de entrada para realizar modelos estadísticos vais a entender perfectamente en qué consiste. Dumificar es transformar una variable continua en $N$ variables dicotómicas. Lo entenderemos mejor con un ejemplo gráfico: En el ejemplo partimos de 8 registros y creamos 4 variables dicotómicas en función de una variable importe. Hemos dumificado la variable importe en 4. Parece fácil de entender el concepto. Bien, pues esto es lo que planteo hacer con SAS. La metodología que voy a emplear es la de siempre: parto de un dataset aleatorio con un identificador y un campo importe que pretendemos transformar en 5 variables ($0, 1$). Para realizar este proceso necesitamos una macro que cuente las observaciones de un dataset (ya la planteé con anterioridad en otro artículo del blog). De todos modos, os dejo completo el código que empieza: ...

6 de abril de 2009 · rvaquerizo

Trucos SAS. Informes de valores missing

A continuación, os planteo como truco SAS una duda que nos mandaba Liliana. Ella necesitaba estudiar los valores perdidos de las tablas de una librería determinada. En este caso, vamos a estudiar los missing de las variables numéricas de una librería; de forma análoga se puede hacer con las alfanuméricas. Como siempre, vamos a trabajar con un ejemplo que parte de tablas generadas aleatoriamente. Comenzamos generando estas tablas: libname datos "C:\temp\datos"; %macro aleatorios; %do i = 1 %to 5; data datos.proyecto_&i.; do id = 1 to 200; if int(ranuni(0) * 10) = 2 then importe1 = .; else importe1 = round(rand("uniform") * 1000, .1); if int(ranuni(0) * 10) > 8 then importe2 = .; else importe2 = round(rand("uniform") * 130, .1); length zona $15; if ranuni(0) <= .32 then zona = "España"; else if ranuni(1) <= .32 then zona = "Cataluña"; else zona = "Resto"; output; end; run; %end; %mend aleatorios; %aleatorios; Con este programa generamos cinco datasets aleatorios con cuatro variables; dos de ellas son importes que tendrán valores missing en determinados casos. En este punto, hemos de crear un proceso que cuente valores perdidos; podemos emplear el PROC SQL o bien el PROC FREQ definiendo primero un formato. Empleamos FREQ para crear una macro: ...

16 de marzo de 2009 · rvaquerizo

Trucos Excel. Trasponer con la función indirecto

Una de las tareas más comunes en Excel es la de transponer filas. En ocasiones hemos de transformar columnas en filas o viceversa: Es muy habitual copiar y pegar transponiendo, pero esta labor es muy manual cuando manejamos hojas con gran cantidad de fórmulas y que pueden generar informes automáticos. Para transponer contamos con la ayuda de la función INDIRECTO de Excel. En la ayuda se define como: “Devuelve la referencia especificada por una cadena de texto. Las referencias se evalúan de inmediato para presentar su contenido. Use INDIRECTO cuando desee cambiar la referencia a una celda en una fórmula sin cambiar la propia fórmula.” ...

27 de febrero de 2009 · rvaquerizo

Trucos SAS. Lista de datasets en macrovariable

Un uso frecuente del PROC SQL es la generación de macrovariables. En este ejemplo, vamos a crear una macrovariable con el nombre de los datasets de una librería SAS que contengan un determinado patrón. También es un ejemplo bastante práctico del uso de las vistas de SASHELP. Para entender mejor el truco, vamos a generar 20 ficheros ficticios con variables aleatorias en el directorio C:\temp: libname temp "C:\temp"; * GENERAMOS 20 DATASETS ALEATORIOS; %macro tablas_aleatorias; %do i = 1 %to 20; data temp.aleat&i.; do j = 1 to 100; persona = ranpoi(8, 23); importe1 = int(rand("uniform") * 1000); importe2 = int(rand("uniform") * 1000); tae = ranpoi(34, 2) + round(rand("uniform"), .1); output; end; drop j; run; %end; %mend tablas_aleatorias; %tablas_aleatorias; Esta macro hace un bucle y genera 20 datasets. A continuación, necesitamos crear un dataset que sea la concatenación de los 20 generados anteriormente. Podríamos poner los 20 nombres a mano, pero esto no es elegante. Para automatizar esto debemos hacer lo siguiente: ...

5 de febrero de 2009 · rvaquerizo

Macros SAS. Asignar permisos en Unix

Hoy os presento una macro especialmente útil para aquellos que trabajéis con SAS en arquitecturas UNIX. En ocasiones, generamos tablas SAS que han de ser modificadas por otros usuarios y éstos no disponen de los permisos adecuados para modificarlas. La siguiente macro lo que hace es un «change mode», un chmod que modifica los permisos de las tablas SAS de una librería. Por defecto, la macro hace un chmod 777, lo que significa que owner, group y others tienen permiso de lectura, escritura y ejecución. Si pusiéramos chmod 766, significaría que el owner tiene todos los permisos y el group y others permiso de lectura y escritura. chmod 744 significaría que el owner tiene todos los permisos y group y others únicamente permiso de lectura. ...

13 de enero de 2009 · rvaquerizo

Macros SAS. Primer y último día del mes de una fecha SAS

Me debo a vosotros, mis lectores. He tenido visitas que buscaban cómo obtener el primer y el último día de un mes con SAS. Como Análisis y Decisión es una web personalizada, voy a dar respuesta a esas búsquedas. Para ello, os planteo dos macros de SAS; además, nos servirán para entender mejor la función INTNX para operar con fechas. El siguiente ejemplo parte de la necesidad de obtener, dada una fecha, el primer y el último día de su mes: ...

23 de diciembre de 2008 · rvaquerizo

Macros SAS. Hacer 0 los valores missing de un dataset

La siguiente macro de SAS nos permite transformar los valores perdidos (missing) en valor 0 para todas las variables de un dataset. Para todas, para todas las numéricas. Esto es muy importante porque en ocasiones es necesario distinguir el valor 0 del valor missing (.). Pero puede ser muy práctica si vamos a emplear procedimientos que han de distinguir valores perdidos o, simplemente, si deseamos que nuestra tabla tenga otro aspecto. ...

27 de noviembre de 2008 · rvaquerizo

Truco Excel. Nuestra propia función redondear en Excel

Hay operaciones que pueden ser muy habituales de hacer con Excel y para las que necesitaríamos una función propia que las realizara. A continuación, vamos a plantear una situación en la que es especialmente útil crear una función específica y guardarla en el libro de macros personal para utilizarla en nuestras sesiones. En este caso concreto, vamos a crear una función que nos redondee un número a 0 o 0,5; es decir, 6,3 valdría 6 y 6,7 valdría 6,5. Para realizarlo sin una función específica emplearíamos múltiples funciones de Excel, por ejemplo: ...

21 de noviembre de 2008 · rvaquerizo