Buenas,
Tengo dos data.frames de la siguiente manera
library(data.table)
id<-c("a1","a2","a3","a4")
id2<-c("a2","a3","a1","a4")
y<-c(1,2,3,4)
z<-c(3,5,6,7)
k<-c(1,3,8,7)
df1<-data.table(id,y,z)
id<-c("a2","a3","a1","a4")
df2<-data.table(id,x,y)
Quiero que el resultado sea solo el LEFT JOIN, es decir, que me devuelva:
resultado--> id,x,y,z
Para ello pruebo, tal y como dicen en:
https://rstudio-pubs-static.s3.amazonaws.com/52230_5ae0d25125b544caab32f75f0360e775.html
merge(df1,df2,by="id",all.x=TRUE)
Pero me devuelve:
id y.x z x y.y
1: a1 1 3 3 3
2: a2 2 5 0 1
3: a3 3 6 2 2
4: a4 4 7 1 4
Es decir, me está duplicando la columna y.
He probado con data.frame y usando all=FALSE, all.x=T,... pero no lo consigo.
¿Alguna idea de como puedo hacerlo?
Gracais
[[alternative HTML version deleted]]
Es normal que te esté dando ese resultado. Las columnas "y" de df1 y de df2 no son iguales... Si pruebas con "dplyr" el resultado es este:> library(dplyr) > left_join(df1, df2)Joining, by = c("id", "y") id y z x 1 a1 1 3 NA 2 a2 2 5 NA 3 a3 3 6 NA 4 a4 4 7 7 Que a lo mejor es lo que quieres... Saludos, Carlos Ortega www.qualityexcellence.es El 9 de octubre de 2017, 12:45, Jesús Para Fernández < j.para.fernandez en hotmail.com> escribió:> Buenas, > > Tengo dos data.frames de la siguiente manera > > library(data.table) > id<-c("a1","a2","a3","a4") > id2<-c("a2","a3","a1","a4") > y<-c(1,2,3,4) > z<-c(3,5,6,7) > k<-c(1,3,8,7) > > df1<-data.table(id,y,z) > > id<-c("a2","a3","a1","a4") > df2<-data.table(id,x,y) > > Quiero que el resultado sea solo el LEFT JOIN, es decir, que me devuelva: > > resultado--> id,x,y,z > > Para ello pruebo, tal y como dicen en: > https://rstudio-pubs-static.s3.amazonaws.com/52230_ > 5ae0d25125b544caab32f75f0360e775.html > > merge(df1,df2,by="id",all.x=TRUE) > > Pero me devuelve: > > id y.x z x y.y > 1: a1 1 3 3 3 > 2: a2 2 5 0 1 > 3: a3 3 6 2 2 > 4: a4 4 7 1 4 > > > Es decir, me está duplicando la columna y. > > He probado con data.frame y usando all=FALSE, all.x=T,... pero no lo > consigo. > > ¿Alguna idea de como puedo hacerlo? > > Gracais > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Hola
Entiendo que donde pusiste k<-c(1,3,8,7) querías
poner
x<-c(1,3,8,7)
Si es correcto, creo que el problema es que al ser "y" una variable
presente en las dos tablas, o la incluyes como argumento para el cruce o te
saldrá "duplicada" (le añade un punto para diferenciarla).¿es esto lo
que quieres?
merge(df1,df2,by=c("id", "y"),all.x=TRUE)
id y z x
1: a1 1 3 NA
2: a2 2 5 NA
3: a3 3 6 NA
4: a4 4 7 7
El Lunes 9 de octubre de 2017 12:45, Jesús Para Fernández
<j.para.fernandez en hotmail.com> escribió:
Buenas,
Tengo dos data.frames de la siguiente manera
library(data.table)
id<-c("a1","a2","a3","a4")
id2<-c("a2","a3","a1","a4")
y<-c(1,2,3,4)
z<-c(3,5,6,7)
k<-c(1,3,8,7)
df1<-data.table(id,y,z)
id<-c("a2","a3","a1","a4")
df2<-data.table(id,x,y)
Quiero que el resultado sea solo el LEFT JOIN, es decir, que me devuelva:
resultado--> id,x,y,z
Para ello pruebo, tal y como dicen en:
https://rstudio-pubs-static.s3.amazonaws.com/52230_5ae0d25125b544caab32f75f0360e775.html
merge(df1,df2,by="id",all.x=TRUE)
Pero me devuelve:
id y.x z x y.y
1: a1 1 3 3 3
2: a2 2 5 0 1
3: a3 3 6 2 2
4: a4 4 7 1 4
Es decir, me est? duplicando la columna y.
He probado con data.frame y usando all=FALSE, all.x=T,... pero no lo consigo.
?Alguna idea de como puedo hacerlo?
Gracais
[[alternative HTML version deleted]]
_______________________________________________
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]]
Gracias,
Entiendo el resultado, pero claro, si el numero de columnas a agregar
coincidentes son muchas, agregarlas obviandolas no es trivial.
Creare por lo tanto una fórmula que elimine todas las columans coincidentes tras
ser unidas.
Gracias de todos modos
Jesús
________________________________
De: jose luis <pepeceb en yahoo.es>
Enviado: lunes, 9 de octubre de 2017 13:48
Para: Jesús Para Fernández; r-help-es en r-project.org
Asunto: Re: [R-es] Merge me agrega siempre las columnas
Hola
Entiendo que donde pusiste
k<-c(1,3,8,7) querías poner
x<-c(1,3,8,7)
Si es correcto, creo que el problema es que al ser "y" una variable
presente en las dos tablas, o la incluyes como argumento para el cruce o te
saldrá "duplicada" (le añade un punto para diferenciarla).
¿es esto lo que quieres?
merge(df1,df2,by=c("id", "y"),all.x=TRUE)
id y z x
1: a1 1 3 NA
2: a2 2 5 NA
3: a3 3 6 NA
4: a4 4 7 7
El Lunes 9 de octubre de 2017 12:45, Jesús Para Fernández <j.para.fernandez
en hotmail.com> escribió:
Buenas,
Tengo dos data.frames de la siguiente manera
library(data.table)
id<-c("a1","a2","a3","a4")
id2<-c("a2","a3","a1","a4")
y<-c(1,2,3,4)
z<-c(3,5,6,7)
k<-c(1,3,8,7)
df1<-data.table(id,y,z)
id<-c("a2","a3","a1","a4")
df2<-data.table(id,x,y)
Quiero que el resultado sea solo el LEFT JOIN, es decir, que me devuelva:
resultado--> id,x,y,z
Para ello pruebo, tal y como dicen en:
https://rstudio-pubs-static.s3.amazonaws.com/52230_5ae0d25125b544caab32f75f0360e775.html
merge(df1,df2,by="id",all.x=TRUE)
Pero me devuelve:
id y.x z x y.y
1: a1 1 3 3 3
2: a2 2 5 0 1
3: a3 3 6 2 2
4: a4 4 7 1 4
Es decir, me est? duplicando la columna y.
He probado con data.frame y usando all=FALSE, all.x=T,... pero no lo consigo.
?Alguna idea de como puedo hacerlo?
Gracais
[[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
[[alternative HTML version deleted]]
Possibly Parallel Threads
- Es posible controlar el tipo de linea que se agrega con abline() en un grafico ?
- Es posible controlar el tipo de linea que se agrega con abline() en un grafico ?
- Es posible controlar el tipo de linea que se agrega con abline() en un grafico ?
- ggplot con muchos colores
- boxplot de las columnas de un data.frame