[R-es] Error al fusionar tablas

miriam.alzate en unavarra.es miriam.alzate en unavarra.es
Mie Ene 18 18:47:30 CET 2017


Buenas tardes,

El problema está ya resuelto. Muchas gracias a todos por vuestra ayuda.
El problema estaba en que la variable común con la que quería fusionar las
dos tablas tenía espacios en blanco al final en una de las tablas y no en
la otra. Por ello, parecía como que entre las dos tablas no hubiera
coincidencias.

Se ha solucionado eliminando el espacio en blanco de la columna en las dos
tablas.
El nombre de una tabla es "Reviews1" y el de la otra "Original.Reviewers".
El nombre de la columna es "Reviewer.Username".

 Este sería el código:
>
> #--------------------
> library(stringr)
> Reviews1$fe_Reviewer.Username <- str_trim(Reviews1$Reviewer.Username,
> 'both')
> Original.Reviewers$fe_Reviewer.Username <-
> str_trim(Original.Reviewers$Reviewer.Username, 'both')
>
> res_end <- merge(
>   Reviews1, Original.Reviewers,
>   by.x="fe_Reviewer.Username",
>   by.y="fe_Reviewer.Username",
>   all.x=TRUE
> )

El Lun, 16 de Enero de 2017, 21:35, Carlos Ortega escribió:
> Hola,
>
> Los data.frames *no* tienen porqué ser iguales en longitud, ni tan
> siquiera
> en el número de columnas.
> Para que al cruzar, te devuelva no sólo las filas comunes (una vez defines
> la columna común) si no todas, tienes que indicar el parámetro
> "*all=TRUE*",
> en el merge() como has hecho.
>
> Las filas de los dos data.frames que no tengan valores en columnas
> iguales,
> los completará con "NA".
>
> Mira el ejemplo de "merge()" en el epígrafe de "Details" en el último
> párrafo:
>
> *"In SQL database terminology, the default value of all = FALSE gives a
> natural join, a special case of an inner join. Specifying all.x = TRUE
> gives a left (outer) join, all.y = TRUE a right (outer) join, and both
> (all
> = TRUE a (full) outer join. DBMSes do not match NULL records, equivalent
> to
> incomparables = NA in R."*
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
> El 16 de enero de 2017, 20:20, jose luis via R-help-es <
> r-help-es en r-project.org> escribió:
>
>> Holabueno, aunque hay muchas posibilidades para fusionar ambas tablas,
>> usando la tuya sería algo así:Df3<-merge(Df1,Df2,by="Reviewer.Username",
>> all = TRUE)
>>
>>
>>
>>
>>     El Lunes 16 de enero de 2017 20:08, Jesús Para Fernández <
>> j.para.fernandez en hotmail.com> escribió:
>>
>>
>>  Los data.frames para unirlos lo mejor es que tengan el mismo numero de
>> columnas o variables.
>>
>>
>> El dataframe2  tiene 17 y el 1 8.
>>
>>
>> Si solo quieres unir esa variable, pon:
>>
>>
>> nuevo.df<-rbind(Df1$Reviewer.Username,Df2$Reviewer.Username)
>>
>>
>> Si quieres crear un nuevo data.frame entero, tendras que poner en el
>> primer data.frame las variables del data.frame2 com ovacias:
>>
>>
>> Df1$variablefaltante1<-NA
>>
>> Df1$variablefaltante2<-NA
>>
>> .............................
>>
>>
>> y luego unir los data.frames
>>
>>
>> nuevo.df<-rbind(Df1,Df2)
>>
>>
>> Un saludo
>>
>> Jesús
>>
>>
>>
>> ________________________________
>> De: R-help-es <r-help-es-bounces en r-project.org> en nombre de
>> miriam.alzate en unavarra.es <miriam.alzate en unavarra.es>
>> Enviado: lunes, 16 de enero de 2017 19:48
>> Para: r-help-es en r-project.org
>> Asunto: [R-es] Error al fusionar tablas
>>
>>
>> Buenas tardes,
>>
>> Estoy tratando de fusionar dos data.frames pero no obtengo lo deseado.
>> Un data.frame (Df1)tiene 53.657 observaciones (y 8 variables) que
>> pertenecen una a cada individuo de la muestra. El otro (Df2) tiene
>> 63.987
>> observaciones (y 17 variables), de los 53.657 individuos previos porque
>> algun individuo tiene varias observaciones. Ambos solo coinciden por la
>> variable "Reviewer.Username".
>>
>> Quiero fusionar ambos data.frame por la columna "Reviewer.Username",
>> pero
>> la tabla resultante solo me da 76 observaciones, cuando realmente
>> necesitaría tener 63.987 observaciones. Cada individuo de la muestra ha
>> escrito 1 o más reviews, por eso puede que tenga más de una observación
>> en
>> el Df2, pero necesito que cada linea de este Df2 tenga asignados los
>> datos
>> pertenecientes a ese individuo del Df1.
>>
>> Hago el comando:
>>
>> Df3<-merge(Df1,Df2,by.x="Reviewer.Username")
>>
>> Pero me da solo 76 observaciones.
>>
>> ¿Me podéis ayudar?
>>
>> Muchas gracias
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>> Página de Información de R-help-es<https://stat.ethz.
>> ch/mailman/listinfo/r-help-es>
>> stat.ethz.ch
>> Esta es una lista de correo para solicitar ayuda sobre R en español y se
>> entiende como un complemento social a la documentación, libros, etc.
>> disponibles sobre R ...
>>
>>
>>
>>
>>     [[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]]
>>
>> _______________________________________________
>> 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
>



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