Saltar al contenido

Dividiendo y combinando los datos con R

Combinar, o unir, los datos es una tarea común de preparación de datos. La función de fusión puede utilizarse para realizar las cuatro funciones estándar de unión:

  1. Unión interna
  2. Unión completa
  3. Unión izquierda
  4. Unión derecha

Comencemos por crear conjuntos de datos de muestra para llevar a cabo estas operaciones.

Dividiendo y combinando los datos con R
Dividiendo y combinando los datos con R
123456789 per_data <- data.frame(cust_id = c("ID1", "ID2", "ID3"), married = c("Yes", "No", "Yes"), Age = c(44, 23, 35)) inc_data <- data. marco(cust_id = c("ID2", "ID1", "ID3"), ingresos = c(60000, 80000, 45000)) head(per_data) head(inc_data)

{r}

Salida:

123456789101112 cust_id casado AgeID1 Si 44ID2 No 23ID3 Si 35 cust_id ingresosID2 60000ID1 80000ID3 45000

Inner Join

Los dos conjuntos de datos pueden combinarse horizontalmente utilizando la función de fusión . En nuestro caso, uniremos internamente los dos conjuntos de datos usando la variable de clave común $0027UID$0027.

La primera línea de código de abajo fusiona los dos marcos de datos, mientras que la segunda línea de abajo muestra el conjunto de datos resultante, $0027merge1$0027.

1234 merge1 = merge(per_data,inc_data,by="cust_id")head(merge1)

{r}

Salida:

1234567 | | cust_id | casado | edad ||| ingresos |||||||--------- |--------- ||| 1 | ID1 | Si | 44 | 80000 || 2 | ID2 | No | 23 | 60000 | 3 | ID3 | Si | 35 | 45000 |

Full Join

El «full join» resulta en mantener todas las observaciones en cualquiera de los conjuntos de datos. La primera línea de código de abajo crea un marco de datos $0027df3$0027, mientras que la segunda línea realiza la unión completa y guarda el objeto como marco de datos, $0027df4$0027.

El resultado creará un marco de datos en el que todas las observaciones se mantendrán en los datos resultantes. Las celdas que faltan se marcarán como $0027NA$0027.

123456 df3 = data.frame(cust_id = c("ID4", "ID1", "ID5"), approval = c("Yes", "No", "Yes")) df4 = merge(x = merge1, y = df3, by = "cust_id", all = TRUE)head(df4)

{r}

Salida:

12345678| | cust_id | casado | edad | ingresos | aprobación |||||--------- |--------- | ||||||||||| || 1 ID1 Sí, 44 80000 No, 2 ID2 No, 23 60000 NA 3 ID3 Sí, 35 45000 NA 4 ID4 NA NA NA Sí, 5 ID5 NA NA NA NA NA Sí, sí.

Left Join

La función de "unión a la izquierda" añade información del marco de datos de la derecha al marco de datos de la izquierda. Vamos a realizar la unión izquierda en los marcos de datos $0027merge1$0027 y $0027df3$0027, como se muestra a continuación.

12345 ljoin = merge(x = fusionar1, y = df3, por = "cust_id", all.x = VERDADERO) head(ljoin)

{r}

Salida:

1234567| | cust_id | casado | edad | ingresos | aprobación ||||--------- |--------- |--------- |--------- 1 | ID1 | Si | 44 | 80000 | No || 2 | ID2 | No | 23 | 60000 | NA | 3 | ID3 | Si | 35 | 45000 | NA |

La salida muestra que todos los registros del conjunto de datos de la izquierda, $0027merge1$0027, se mantienen mientras que el conjunto de datos de la derecha, $0027df3$0027, está mapeado para ello.

Right Join

La función "unión derecha" añade información del marco de datos de la izquierda al marco de datos de la derecha. Vamos a realizar la unión derecha en los marcos de datos $0027merge1$0027 y $0027df3$0027, como se muestra a continuación.

1234 rjoin = merge(x = fusionar1, y = df3, por = "cust_id", all.y = TRUE)head(rjoin)

{r}

Salida:

1234567| | cust_id | casado | edad | ingresos | aprobación ||| |--------- |--------- |--------- |--------- 1 | ID1 | Si | 44 | 80000 | No || 2 | ID4 | NA | NA | NA | Si || 3 | ID5 | NA | NA | NA | Si |