Trucos SAS. Lista de variables missing

Duda que me plantearon ayer por la tarde: dada una serie de variables, determinar qué registro tiene todas esas variables nulas. El truco que planteo puede servir para determinar incluso cuántos valores perdidos tiene esa lista de variables; ese truco me lo reservo para otro día. El código lo acompaño con un ejemplo para que se pueda ejecutar y analizar su funcionamiento: /* GENERAMOS DATOS ALEATORIOS CON MISSING */ data aleatorio; do i = 1 to 20000; aleat1 = sqrt(rannor(45)); aleat2 = sqrt(rannor(5)); aleat3 = sqrt(rannor(4)); aleat4 = sqrt(rannor(450)); aleat5 = sqrt(rannor(40)); output; end; run; /* IDENTIFICAMOS FILAS COMPLETAMENTE NULAS */ data fila_nula; set aleatorio; nulo = 0; array varib(*) aleat1--aleat5; do j = 1 to dim(varib); if not missing(varib(j)) then nulo = 1; end; drop j; if nulo = 0; run; Muy sencillo el truco. Si se encuentra alguna variable que no es nula, la variable nulo ya no toma el valor 0. Espero que os sea de utilidad. Saludos.

8 de marzo de 2013 · rvaquerizo

Truco R. Valores perdidos a 0, ejemplo de uso de sapply

Muy habitual partirnos la cabeza con valores perdidos en R. Los NA pueden darnos algún quebradero de cabeza. Este truco es muy sencillo: transforma valores missing a 0 y nos sirve para aplicar funciones a data.frame con la función sapply. Veamos el sencillo ejemplo: x <- c(1, 23, 5, 9, 0, NA) y <- c(5, 45, NA, 78, NA, 34) dataf <- data.frame(x, y) mean(dataf$x, na.rm = TRUE) mean(dataf$y, na.rm = TRUE) # Podría interesarnos tener en cuenta los NAs sum(dataf$x, na.rm = TRUE) / nrow(dataf) sum(dataf$y, na.rm = TRUE) / nrow(dataf) Tenemos un data.frame con dos variables que contienen valores perdidos; deseamos crear una función que pase estos valores a 0 y aplicarlo al data.frame de partida: ...

31 de enero de 2010 · rvaquerizo

¿Qué hacer con los valores perdidos de nuestras variables?

Creo que casi todos los que han hecho modelos matemáticos alguna vez en su vida se han encontrado con la pregunta que titula este breve artículo. Aunque más que artículo es una reflexión y sobre todo espero que al final sea un pequeño foro de ideas y de métodos con los que hacer frente a este problema. Lo primero que me plantearía yo es: ¿por qué perdemos datos? Podemos tener una imperfección a la hora de recoger la información y podría ayudarnos a mejorar el proceso. También un valor perdido puede ser un valor en sí mismo. No es lo mismo tener un consumo de 0 euros con un teléfono móvil que no tener teléfono móvil; sin embargo, si sabemos que tenemos teléfono móvil, un valor perdido es un 0 ya que no aparece el consumo en nuestros sistemas; en la telefonía este es un caso prototípico de valor perdido. Otro ejemplo es la medición de un paciente que ha abandonado el estudio; en este caso el dato recogido es nulo, y debemos evaluar si tener en cuenta ese registro para nuestro estudio. El primer paso ante un análisis de los valores perdidos es definir «valor perdido». ...

16 de septiembre 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