Pasando de SAS a R. Primer y ultimo elemento de un campo agrupado de un data frame

Las personas que están acostumbradas a trabajar con SAS emplean mucho los elementos first, last y by, en el blog hay ejemplos al respecto, en R podemos hacer este trabajo con la librería “estrella” dplyr de un modo relativamente sencillo. A continuación se presenta un ejemplo para entender mejor como funciona, creamos un conjunto de datos aleatorio: ```r id <- rpois(100,20) mes <- rpois(100,3)+1 importe <- abs(rnorm(100))*100 df <- data.frame(cbind(id,mes,importe)) Tenemos un identificador, una variable mes y un importe y deseamos obtener el menor importe por mes el primer paso a realizar es ordenar el data frame de R por ese identificador, el mes y el importe en orden descendente: ...

19 de octubre de 2017 · rvaquerizo

Máximo por registro de una serie de variables carácter en SAS

Un lector del blog preguntaba como obtener el valor máximo dentro de un registro, por fila, de una sucesión de variables caracter; evidentemente la función max no servía porque es específica para variables numéricas. La duda la planteaba del siguiente modo: Pero tengo una duda que no soy capaz de sacar y no veo ninguna cosa parecida para poder sacarlo, a ver si me puedes ayudar, o si no, pues me dices que no y no hay ningún problema. Tengo un data de este estilo: Nombre Clave1 Clave2 Clave3 Ana A A B Pepe H M C Juan A A A El tema es que necesito calcular el máximo de todas las claves para cada persona, es decir, Nombre Clave1 Clave2 Clave3 Max Ana A A B B Pepe H M C M Juan A A A A Como son letras, no me funciona el `max` en el `proc sql` y tampoco sé ninguna función que pueda pasarme las letras a numéricas. Está claro que la única manera que se me ocurre es transformando las letras a números con un `case`, hacer el máximo y después transformarlo otra vez a letras, pero es por si sabes alguna manera mejor de hacerlo. La solución que le planteo se realiza con un array donde seleccionamos sólo las variables clave: ...

24 de febrero de 2017 · rvaquerizo

Truco SAS. Tablas de una librería en una `macro variable`

Me plantean una duda, como crear un conjunto de datos con las tablas de una librería en SAS y posteriormente generar una macro variable con ellos, esta es una entrada análoga a otra del blog pero sirve para recordar como funciona el ODS de SAS y el PROC DATASETS un procedimiento que no he usado habitualmente. Lo primero que vamos a hacer es observar que resultados arroja el PROC DATASETS en su sintaxis más sencilla, ver los contenidos de una librería: ...

24 de enero de 2017 · rvaquerizo

Bucle de fechas con SAS para tablas particionadas

Partimos de un mes inicial hasta un mes final es necesario crear una tabla SAS con dos variables, el inicio del mes y el final del mes. Trabajo con fechas en SAS que todos sabemos es una tarea un «poco ardua». El título de la entrada también es un poco peculiar pero es la respuesta a la duda que planteaba un lector: Cogemos dos fechas en formato `yyyymmaa` Ej: `20150101` a `2016131` Necesito una salida como la siguiente `20150101 20150131` `20150201 20150228` `20150301 20150331` `20150401 20150430` . `20161101 20161130` `20161201 20161231` Pero para que los datos pedidos en este periodo salgan en una tabla por mes con un `proc sql` ya diseñado que funciona pero sin particionarlo en una tabla por mes en el log Se me han ocurrido varias formas de hacerlo pero a continuación os planteo la siguiente. Como referencia hemos de irnos a una entrada anterior del blog, una entrada del 2008 cuando puse en marcha analisisydecision.es ...

20 de diciembre de 2016 · rvaquerizo

Como obtener los centroides de municipios con SAS. Mapas con SGPLOT

Un amigo y lector del blog me ha pedido un mapa de códigos postales donde poder identificar los centroides para andar calculando distancias a otros puntos. Yo no tengo un mapa de España por códigos postales para poder usar con fines comerciales, pero si cuento en el blog como poder obtenerlo bajo ciertas condiciones. Lo que si puedo contar a Juan es como hacer un mapa por municipios con SAS, aunque ya he hablado de ello hay ciertos aspectos que pueden ser interesantes. y todo empieza donde siempre http://www.gadm.org/country la web donde tenemos los mapas «libres» por países, seleccionáis Spain y el formato shapefile una vez descargados los mapas en vuestros equipos empezamos con el trabajo en SAS: ...

9 de noviembre de 2016 · rvaquerizo

Qué pasa si uso una regresión de poisson en vez de una regresión logística

Para un tema de mi trabajo voy a utilizar una regresión de poisson en vez de una regresión logística, el evento es si o no y no tiene nada que ver el tiempo, ni se puede contabilizar como un número, pero a efectos prácticos es mejor para mi usar una regresión de poisson. Entonces, ¿qué pasa si hago una poisson en vez de binomial? Como siempre si mi n es muy grande hay relación entre ambas distribuciones. Pero yo quiero saber si me puede clasificar mis registros igual una regresión logística de poisson y una binomial y se me ha ocurrido hacer un ejercicio teórico muy simple. ...

19 de septiembre de 2016 · rvaquerizo

Test de bondad de ajuste con SAS

Pregunta que me han hecho hoy. Cómo hacer un test de bondad de ajuste con SAS y la respuesta que he dado: data datos_aleatorios; do i=1 to 200000; *GENERAMOS UNAS VARIABLES ALEATORIAS; variable_gamma = rangam(89,450); variable_exponencial = ranexp(23)*100+0.17045; output; end; run; *ods select ParameterEstimates GoodnessOfFit ; proc univariate data=datos_aleatorios; var var:; histogram / gamma; run; Mucho cuidado con estos test de hipótesis. Yo suelo conformarme con ver la tabla de cuantiles. Saludos.

2 de agosto de 2016 · rvaquerizo

Truco SAS. Como leer PC Axis con SAS

Estoy leyendo información del INE que tiene que terminar cargándose en SAS y estos datos están en formato PC Axis. Existen macros en SAS para generar datasets a partir de PC Axis pero la verdad es que no he llegado a entender muy bien como funcionan y tras varios errores la mejor opción que he encontrado es emplear R y el paquete pxR que han creado algunos miembros de la Comunidad de R-Hispano. Como realizo esta tarea es más que sencillo: ...

22 de junio de 2016 · rvaquerizo

KNN con SAS. Mejorando K-Means

La clasificación por k vecinos más cercanos es EL MÉTODO supervisado no paramétrico. El KNN, si empleamos las siglas en inglés, clasifica las observaciones en función de su probabilidad de pertenecer a uno u otro grupo, en el video que encabeza la entrada queda muy bien explicado. El caso es que tenemos la posibilidad de realizar esta clasificación con SAS STAT y el PROC DISCRIM y me parece interesante dedicarle unas líneas. Hace años ya hablamos de segmentación con SAS y vamos a emplear los mismos datos para ilustrar esta entrada. Primero generamos un conjunto de datos con datos simulados de 3 esferas que clasificamos en 3 grupos: ...

29 de abril de 2016 · rvaquerizo

Interpretación de los parámetros de un modelo GLM

Muchos estudiantes terminarán trabajando con GLM que siguen buscando relaciones lineales en multitud de organizaciones a lo largo del planeta. Y hoy quería ayudar a esos estudiantes a interpretar los parámetros resultantes de un GLM, más concretamente los resultados de un PROC GENMOD de SAS aunque lo que vaya a contar ahora se puede extrapolar a otras salidas de SAS o R. En la línea de siempre no entro en aspectos teóricos y os remito a los apuntes del profesor Juan Miguel Marín. Con un GLM al final lo que buscamos (como siempre) es distinguir lo que es aleatorio de lo que es debido al azar a través de relaciones lineales de un modo similar a como lo hace una regresión lineal, sin embargo los GLM nos permiten que nuestra variable dependiente no sólo siga una distribución normal, puede seguir otras distribuciones como Gamma, Poisson o Binomial. Además un GLM puede trabajar indistintamente con variables categóricas y numéricas pero yo recomiendo trabajar siempre con variables categóricas y en la práctica cuando realizamos un modelo de esta tipo siempre realizaremos agrupaciones de variables numéricas. Si disponemos de variables agrupadas, de factores, los parámetros de los modelos nos servirán para saber como se comporta nuestra variable dependiente a lo largo de cada nivel del factor. ...

21 de marzo de 2016 · rvaquerizo