studio - Left join solo las columnas seleccionadas en R con la función merge()
tablas cruzadas en r (3)
Creo que es un poco más simple usar las funciones dplyr
select
y left_join
; al menos es más fácil de entender para mí. La función de dplyr
de dplyr
está hecha para imitar argumentos sql.
library(tidyverse)
DF2 <- DF2 %<%
select(client, LO)
joined_data <- left_join(DF1, DF2, by = "Client")
En realidad, no necesita usar el argumento "por" en este caso porque las columnas tienen el mismo nombre.
Estoy intentando IZQUIERDA Unir 2 marcos de datos, pero no quiero unir todas las variables del segundo conjunto de datos:
Como ejemplo, tengo el conjunto de datos 1 (DF1):
Cl Q Sales Date
A 2 30 01/01/2014
A 3 24 02/01/2014
A 1 10 03/01/2014
B 4 10 01/01/2014
B 1 20 02/01/2014
B 3 30 03/01/2014
Y me gustaría unirme al conjunto de datos 2 (DF2):
Client LO CON
A 12 CA
B 11 US
C 12 UK
D 10 CA
E 15 AUS
F 91 DD
Puedo unirme con el siguiente código:
merge (x = DF1, y = DF2, by = "Cliente", all.x = TRUE):
Client Q Sales Date LO CON
A 2 30 01/01/2014 12 CA
A 3 24 02/01/2014 12 CA
A 1 10 03/01/2014 12 CA
B 4 10 01/01/2014 11 US
B 1 20 02/01/2014 11 US
B 3 30 03/01/2014 11 US
Sin embargo, combina las columnas LO y CON. Solo me gustaría fusionar la columna LO.
Client Q Sales Date LO
A 2 30 01/01/2014 12
A 3 24 02/01/2014 12
A 1 10 03/01/2014 12
B 4 10 01/01/2014 11
B 1 20 02/01/2014 11
B 3 30 03/01/2014 11
Nada elegante, pero esta podría ser otra respuesta satisfactoria.
merge(x = DF1, y = DF2, by = "Client", all.x=TRUE)[,c("Client","LO","CON")]
Esto será útil especialmente cuando no necesite las claves que se usaron para unir las tablas en sus resultados.
Puede hacerlo subconjuntando los datos que pasa a su fusión:
merge(x = DF1, y = DF2[ , c("Client", "LO")], by = "Client", all.x=TRUE)
O simplemente puede eliminar la columna después de su combinación actual :)