[R-es] Juntar dos data.frames eliminando celdas con NA

Luisfo luisfo89 en yahoo.es
Mar Mar 1 11:07:12 CET 2016


Buenas Ruben,

Para el paso 3, lo que necesitas es mover los NAs al final (a la derecha).

#funcion push_nas: mueve los NA's al final del vector/fila (a la derecha)
push_nas <- function(vector){
   nas.bool <- is.na(vector)
   c(vector[which(!nas.bool)], vector[which(nas.bool)])
}

#aplicas la función push_nas a cada fila; suponiendo que tu tabla del 
paso 2 se llama fates
data.frame(t(apply(fates, 1, push_nas)))

Espero que esto te sirva, no se me ocurre ninguna función automática.

Un saludo,
Luisfo


On 03/01/2016 10:50 AM, Ruben Bermad wrote:
> Hola,
>
> Perdonar por saltarme algun paso, pero a veces no me doy cuenta que yo 
> lo tengo muy claro porque soy el que tiene el problemay no termino de 
> explicarlo del todo jeje.
>
> Ahora he adjuntado los pasos necesarios en excel para obtener el 
> resultado que quiero , serian 5 pasos:
> Quizas en R haya otra manera mas rapida.
>
> 1) Cargar las dos bases de datos (base de datos ver y base de datos azul)
> 2) Hacer un cbind en R
> 3) Eliminar las celdas centrales con NA y correr los registros hacia 
> la izquierda. Los ultimos valores los he puesto en rojo ya que son NAs 
> nuevos que quedan por el desplazamiento de las celdas
> Esto es facil en excel pero no se hacerlo en R
> 4) Eliminar las columnas con todos sus registros como NA
> 5) Renombrar los fates desde el 1 hasta la columna que tenga valor
>
> Lo que se me resiste es el paso 3. Sabes como hacer ese eliminacion de 
> celdas en R, u otro manera de hacer el join de esta informacion?
>
> Muchas gracias,
> Saludos,
> Ruben
>
> ------------------------------------------------------------------------
> Date: Mon, 29 Feb 2016 23:20:25 +0100
> Subject: Re: [R-es] Juntar dos data.frames eliminando celdas con NA
> From: cof en qualityexcellence.es
> To: ruben_bm en hotmail.com
> CC: r-help-es en r-project.org
>
> Hola,
>
> Del ejemplo que has puesto, no entiendo cómo generas el "Fate_3" y el 
> "Fate_4" tras hacer ese ejercicio de poner los fates en columnas 
> consecutivas.
>
> Adjunto cómo se dispone el ejemplo que comentas en Excel y claro no 
> has indicado en el ejemplo ningún Fate_3 que permita obtener un Fate_3 
> <- c(0,0,0,NA) a partir del único que tienes Fate_3 <- c(0,NA,NA,NA).
>
> Gracias,
> Carlos.
>
> El 29 de febrero de 2016, 12:36, Ruben Bermad <ruben_bm en hotmail.com 
> <mailto:ruben_bm en hotmail.com>> escribió:
>
>     Hola a todos,
>     Quisiera juntar las informacion de dos data.frames con una union
>     de columnas un tanto especial. La informacion que tengo son datos
>     de captura-recaptura de diferentes individuos, por ejemplo en una
>     base de datos tengo:ID <- c(1,2,3,4)Fate_1 <- c(2,2,2,2)Fate_2 <-
>     c(0,0,0,NA)Fate_3 <- c(0, NA, NA, NA)
>     y en otra base de datos tengo:ID <- c(1,2,3)Fate_1 <- c(0, 0, 0,
>     NA)Fate_2 <- c(NA, 0, NA, NA)
>     Como podeis ver no todos los fates de todos los individuos  tienen
>     algun valor, y lo que gustaria es juntarlo sin the haya NAs entre
>     diferentes Fates para cada fila, que es lo que me sucederia si
>     hiciera un cbind entre los dos data.frames.
>     Lo que se me habia ocurrido era hacer un cbind, que quedaria un
>     resultado como este:ID <- c(1,2,3,4)Fate_1 <- c(2,2,2,2)Fate_2 <-
>     c(0,0,0,NA)Fate_3 <- c(0, NA, NA, NA)Fate_1.Y <- c(0, 0, 0,
>     NA)Fate_2.Y <- c(NA, 0, NA, NA)
>     y despues ir fila por fila haciendo algo similar a lo que seria en
>     excel de eliminar unas celdas y desplazar hacia la izquierda.
>     Quedando las ultimas filas como NA, y estando toda la informacion
>     de los Fates seguida, con el siguiente resultado:
>     ID <- c(1,2,3,4)Fate_1 <- c(2,2,2,2)Fate_2 <- c(0,0,0,NA)Fate_3 <-
>     c(0, 0, 0, NA)Fate_4 <- c(0, 0, NA, NA)
>     Alguien sabe como podria hacer esta eliminacion de celdas y
>     desplazamiento hacia la izquierda de manera automatica, u otra
>     manera mejor para juntar esta informacion?
>     Muchas gracias por adelantado, Un cordial saludo,Ruben
>             [[alternative HTML version deleted]]
>
>     _______________________________________________
>     R-help-es mailing list
>     R-help-es en r-project.org <mailto:R-help-es en r-project.org>
>     https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
>
> -- 
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es <http://www.qualityexcellence.es>
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es


	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es