Macros (fáciles) de SAS. Eliminar outliers en una variable

Hace tiempo ya os propuse una chapuza para eliminar outliers de forma multivariante. Por supuesto, quedaba eliminar outliers en una variable: recortar los valores extremos en aquellas variables cuantitativas que deseemos. Para ello os propongo una macro que no considero muy compleja y que analizaré con mayor detalle; pero, lo primero, la macro al completo: %macro elimina_outliers( varib, /* VARIABLE PARA ELIMINAR EL OUTLIER */ entrada, /* DATASET DE ENTRADA */ salida, /* DATASET DE SALIDA, PUEDE SER EL MISMO DE ENTRADA */ corte_inferior, /* % DE CORTE INFERIOR */ corte_superior /* % DE CORTE SUPERIOR */ ); * CREAMOS LOS PERCENTILES; data _null_; call symput ("lim1", compress(0 + &corte_inferior.)); call symput ("lim2", compress(100 - &corte_superior.)); run; * PREPARAMOS MV CON LOS NOMBRES QUE OBTENDREMOS DEL PROC UNIVARIATE; data _null_; call symput ('nom_lim1', compress("P_" || tranwrd("&lim1.", '.', '_'))); call symput ('nom_lim2', compress("P_" || tranwrd("&lim2.", '.', '_'))); run; * EL UNIVARIATE GENERA UNA SALIDA SOLO CON LOS PERCENTILES DESEADOS; proc univariate data=&entrada. noprint; var &varib.; output out=sal pctlpre=P_ pctlpts=&lim1., &lim2.; run; * CREAMOS MV CON LOS CORTES DESEADOS; data _null_; set sal; call symput("inf", &nom_lim1.); call symput("sup", &nom_lim2.); run; * REALIZAMOS EL FILTRO; data &salida.; set &entrada.; if &varib. > &inf. and &varib. < &sup.; run; proc delete data=sal; run; %mend; Su ejemplo de uso correspondiente: ...

16 de mayo de 2011 · rvaquerizo

Trucos Excel. Múltiples campos calculados en una tabla dinámica

Truco de Excel muy rápido que os permite crear múltiples campos calculados en una tabla dinámica. Imaginemos que tenemos una tabla dinámica con un campo que es la suma de la exposición al riesgo y, por otro lado, tenemos el número de siniestros. Estos dos campos los tenemos para 30 coberturas. Si queremos crear un campo calculado que sea la frecuencia siniestral (número de siniestros / exposición) para esos 30 campos, tenemos que ir a herramientas de tabla dinámica, fórmulas, definir el nuevo campo… O bien podemos emplear la siguiente macro: ...

12 de mayo de 2011 · rvaquerizo

Trucos Excel. Transponer con la función DESREF

Este blog ya contó cómo trasponer filas a columnas con la función INDIRECTO. Recientemente tuve que explicar ese proceso a una persona y parece que le costó; sin embargo, entendió a la perfección el uso de la función DESREF (a la que ya hicimos mención en una entrada reciente) y por ello me he animado a crear esta entrada. En este enlace podéis descargar un Excel 2007 que contiene el siguiente ejemplo: ...

30 de abril de 2011 · rvaquerizo

Trucos Excel. Repetir filas o columnas con la función DESREF

La función DESREF va a ser la protagonista de dos trucos de Excel. Vamos a repetir filas o columnas con esta función. En nuestro caso, la función va a devolver el valor de una celda referenciada del modo: DESREF(<Celda inicial anclada>; <Filas por debajo de la referenciada>; <Columnas a la derecha de la fila referenciada>). Para nuestro caso, el funcionamiento de la función DESREF será: ...

21 de abril de 2011 · rvaquerizo

Lectura de ficheros SAS7BDAT de SAS directamente con R

Un post de BIOSTATMATT que nos conduce a un código in R que nos permite leer datasets de SAS directamente con R sin necesidad de tener SAS. Un problema recurrente que abordaré con más detenimiento otro día [ahora me voy a pescar]. Aquí tenéis el enlace: http://biostatmatt.com/archives/1216 Solo tenéis que cargar la función read.sas7bdat que tenéis in este enlace. Y ya podéis leer conjuntos de datos SAS. Ejemplo: source("http://biostatmatt.com/R/sas7bdat.R") datos <- read.sas7bdat("D:\\raul\\Trabajo\\salida\\p03.sas7bdat") De momento lo he probado in conjuntos de datos SAS sin índices y sin comprimir; si encuentro algún problema, primero se lo reporto a la gente que ha creado esta función y más tarde os lo comento. Saludos.

19 de abril de 2011 · rvaquerizo

Trucos Excel. Poner etiquetas en gráficos de dispersión

Una macro de Visual Basic muy sencilla es la única forma de etiquetar gráficos de dispersión que me he encontrado. Si alguien encuentra otro modo más sencillo de hacerlo, que lo comente en estas líneas. La intención es llegar a este gráfico: No es que sea un gran gráfico (recordad que está hecho en Excel), pero nos permite ver cómo se distribuyen los países en función de la renta per cápita y el número de horas trabajadas al año. Además podemos identificarlos perfectamente, como es el caso de Luxemburgo, como siempre. ...

11 de abril de 2011 · rvaquerizo

Trucos SAS. Validación de consultas con PROC SQL

Hay ocasiones en las que lanzamos consultas a las BBDD con SAS y necesitamos saber si son correctas. Quería plantearos un truco SAS para PROC SQL que valida las consultas antes de ser ejecutadas. Empiezo el truco en la línea habitual: creo un dataset de ejemplo y os presento cómo realizar la validación; de este modo, vosotros podéis copiar y pegar el código en una sesión de SAS y comprobar su funcionamiento. Datos aleatorios de partida: ...

6 de abril de 2011 · rvaquerizo

Trucos Excel. Transformar un carácter a fecha

Si tenemos en Excel celdas con valores en la forma: viernes 1 de enero de 2010 sábado 2 de enero de 2010 domingo 3 de enero de 2010 … y deseamos transformarlo en fecha, podemos hacer lo siguiente: =TEXTO(IZQUIERDA(EXTRAE(A2; ENCONTRAR(" "; A2; 1) + 1; 30); 2) & EXTRAE(EXTRAE(A2; ENCONTRAR(" "; A2; 1) + 1; 30); 6; 4) & DERECHA(EXTRAE(A2; ENCONTRAR(" "; A2; 1) + 1; 30); 4); "dd/mm/aaaa") * 1 ¡Toma función! Vamos a contar paso por paso cómo funciona: ...

13 de marzo de 2011 · rvaquerizo

Macros (fáciles) de SAS. Determinar si existe una variable en un dataset

Duda que me plantearon el otro día. ¿Es posible determinar si existe una variable en un conjunto de datos SAS? Pretendían crear una macro variable que tomara el valor 1 si existía o 0 si no existía. Resolví la duda pero me guardé la macro para ponerla en el blog y así la podéis utilizar todos. De eso se trata, de compartir mis conocimientos con todos de forma altruista por ello prefiero que planteéis las dudas en el blog, no por correo. Así, entre todos, las podemos resolver. En este caso la macro es muy sencilla y tiene pocas líneas: ...

25 de febrero de 2011 · rvaquerizo

Nuestras funciones de R en menús con rpanel y svWidgets

Hoy quería acercarme a los paquetes rpanel y svWidgets para crear ventanas y menús respectivamente. La idea es sencilla: tenemos funciones en R que empleamos habitualmente y con ellas vamos a realizar un menú. Partimos de una función muy sencilla en R para eliminar datos con valores missing. [Por cierto, qué cansado estoy de escribir palabras en inglés para facilitar las búsquedas: un valor missing es un valor perdido. Tras el lapso, continúo]. Mi función: ...

10 de febrero de 2011 · rvaquerizo