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

Muy habitual partinos 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(cbind(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:


haz.cero.na=function(x){
ifelse(is.na(x),0,x)}
dataf.2=data.frame(sapply(dataf,haz.cero.na))
dataf
dataf.2

Un ejemplo muy sencillo de aplicación de funciones con sapply a data.frames perfectamente extrapolable a matrices y vectores. Erreros tiene una entrada al respecto. Saludos.

3 comentarios en “Truco R. Valores perdidos a 0, ejemplo de uso de sapply

  1. Estoy iniciando un curso de R en la UnADM. y no se que es el valor NA. se refieren a el pero el PDF que nos guía no lo define. si alguien me pudiera ayudar.
    Gracias.

    1. NA son los datos no incluidos en la base de datos o en la encuesta que deberían haber sido llenados. Se les denomina NA por convencionalismo. Cuando se depura una base de datos se encuentran estos blancos y los estadísticos deben tomar una decisión para seguir analizando:
      a. sustituyen los NA por cero.
      b.Sustituyen los NA por algún valor , realizando un supuesto.

  2. hola yo tengo una base de datos y uso el survey tengo una variable, ingresos de la cual quiero eliminar los ceros para hallar el promedio de ingresos cuando pongo >0 y uso svymean(ingresos, el diseño muestral que para mi caso es diseño), el resultado es cualquier cosa, pueden ayudarme con esto? gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

[bws_google_captcha]