lunes, 27 de abril de 2020

R en español: Unir columnas o renglones de data frames de dos listas distintas

Trabajar con listas ahorra mucho tiempo y lineas de código, pero hay ocasiones en las que las soluciones usuales para unir data frames no resultan como uno espera.

Cuando se desea unir dos data frames sólo es necesario utilizar la función append o bien, emplear las funciones cbind y rbind según se requiera. El problema surge cuando queremos unir todos los data frames de una lista con los de otra lista.

Por ejemplo, pensemos que tenemos estas dos listas:

lista1 <- list(df1, df2)
lista2 <- list(df3, df4)

Si queremos generar una nueva lista con las columnas combinadas de los data frames de las dos listas sólo necesitamos hacer lo siguiente.

1. Supongamos que tenemos estas dos listas, la A y la B:

num = 10
A<-list()
B<-list()
for (j in 1:num){
    A[[j]] <- as.data.frame(matrix(seq(1:9),3,3))
    B[[j]] <- as.data.frame(matrix(seq(10:18),3,3))
}

combo1<-list()
for (i in 1:num){
    combo1[[i]] <-rbind(A[[i]], B[[i]])  
}
2. Ahora sólo necesitamos usar mapply con la función cbind (para unir columnas) o rbind (para unir renglones).

## Make this a more _minimal_ reproducible example
A <- A[1:2]
B <- B[1:2]

## Override default attempt to reduce results to a vector, matrix, or other array
mapply("rbind", A, B, SIMPLIFY=FALSE)
# [[1]]
#   V1 V2 V3
# 1  1  4  7
# 2  2  5  8
# 3  3  6  9
# 4  1  4  7
# 5  2  5  8
# 6  3  6  9
# 
# [[2]]
#   V1 V2 V3
# 1  1  4  7
# 2  2  5  8
# 3  3  6  9
# 4  1  4  7
# 5  2  5  8
# 6  3  6  9
Para más información sobre este código revisar: https://stackoverflow.com/questions/14329264/mapply-and-two-lists

No hay comentarios:

Publicar un comentario

R en Español: Obtener nombres de renglones con funcion row.names

Si deseo obtener los nombres de los renglones de mi dataframe puedo utilizar la función row.names de la paquetería básica de R y RStudio. ...