[R-es] Quedarse con las muestras de una BD que están presentes otra, basado en dos variables

Manuel Mendoza mmendoz@ @end|ng |rom |u|br|ghtm@||@org
Sab Jun 27 13:38:42 CEST 2020


Gracias Carlos, Xacobe y Emilio, resuelto.
Manuel

El sáb., 27 jun. 2020 a las 13:12, Carlos Ortega (<cof using qualityexcellence.es>)
escribió:

> OK.
> Entonces lo del merge debiera de ser así (fíjate en el orden de los
> data.frames y lo del all.x)
>
> df_unido <- merge(*df_pequeno, df_grande,* by.x =
> c('clave_1_de_df_pequeno', 'clave_2_de_df_pequeno') , by.y =
> c('clave_1_de_df_pequeno', 'clave_2_de_df_pequeno'), *all.x= TRUE*)
>
> Con esto del "all" lo que haces es definir un tipo de join. Y ahora lo que
> quieres hacer es un left_join sobre el pequeño.
> Al data.frame pequeño añadirle nuevas columnas, pero solo en las que
> coincida con long/lat con el grande. Y el resto de filas del "grande"
> ignorarlas.
>
> El sáb., 27 jun. 2020 a las 13:08, Manuel Mendoza (<
> mmendoza using fulbrightmail.org>) escribió:
>
>> Hola Carlos, hago lo que indicas, o eso creo, y la df resultante tiene
>> tantas filas como la más grande, cuando tenía que ser al revés.
>> data tiene 15376 y Data7050 14563. Son celdas de un mapa, cada una con su
>> lon y su lat, y quiero quedarme con las que estan en Data7050 (la menor).
>> Todas están también en data, por lo que data2 debería tener  14563 muestras.
>>
>> data2 <- merge(Data7085,data,  by.x = c('lon', 'lat') , by.y = c('lon',
>> 'lat'), all = T)
>>
>> Lo que pusiste:
>> df_unido <- merge(df_uno, df_dos, by.x = c('clave_1_de_df_uno',
>> 'clave_2_de_df_uno') , by.y = c('clave_1_de_df_dos', 'clave_2_de_df_dos'),
>> all = TRUE)
>>
>> El sáb., 27 jun. 2020 a las 11:23, Carlos Ortega (<
>> cof using qualityexcellence.es>) escribió:
>>
>>> Hola Manuel,
>>>
>>> Es un problema que puedes solucionar perfectamente con la función
>>> "merge()" para juntar dos data.frames.
>>> En esa función no tienes porqué usar solamente una clave común que sirva
>>> para unir los dos data.frames, puedes usar varias claves.
>>>
>>> Esta sería la sintaxis:
>>>
>>> df_unido <- merge(df_uno, df_dos, by.x = c('clave_1_de_df_uno',
>>> 'clave_2_de_df_uno') , by.y = c('clave_1_de_df_dos', 'clave_2_de_df_dos'),
>>> all = TRUE)
>>>
>>> Y el "all = TRUE" del final, sirve para que solo te salgan los comunes
>>> en los dos grupos.
>>>
>>> Gracias,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>>
>>>
>>> El vie., 26 jun. 2020 a las 21:39, Manuel Mendoza (<
>>> mmendoza using fulbrightmail.org>) escribió:
>>>
>>>> Buenas tardes, quedarme con las muestras de una BD (data) que están
>>>> presentes en otra (datax), cuando se tiene una variable que nunca se
>>>> repite
>>>> (Key) es fácil: data <- subset(data,data$Key %in% datax$Key).
>>>> Mi problema es cuando la exclusividad viene dada por dos variables.
>>>> P.e.,
>>>> las coordenadas de un mapa: lon y lat.
>>>> ¿Como puedo quedarme con las muestras de una df cuya lon y lat son
>>>> iguales
>>>> a la de otra?
>>>> Gracias, como siempre,
>>>> Manuel
>>>>
>>>>         [[alternative HTML version deleted]]
>>>>
>>>> _______________________________________________
>>>> R-help-es mailing list
>>>> R-help-es using r-project.org
>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>
>>>
>>>
>>> --
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>

	[[alternative HTML version deleted]]



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