Re: [R-es] Quedarse con las muestras de una BD que están presentes otra, basado en dos variables
Gracias Carlos, Xacobe y Emilio, resuelto. Manuel El sáb., 27 jun. 2020 a las 13:12, Carlos Ortega () 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 (< > mmend...@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 (< >> c...@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 (< >>> mmend...@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@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]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Quedarse con las muestras de una BD que están presentes otra, basado en dos variables
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 (< mmend...@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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Quedarse con las muestras de una BD que están presentes otra, basado en dos variables
Hola, Yo lo haría con dplyr::left_join() https://dplyr.tidyverse.org/articles/two-table.html Un saludo, Emilio L. Cano http://emilio.lcano.com > El 26 jun 2020, a las 21:38, Manuel Mendoza > 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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Quedarse con las muestras de una BD que están presentes otra, basado en dos variables
Puedes crear una variable única que sirva de clave. Por ejemplo: lon*1 + lat La transformación lineal de una de las variables es para evitar que se solapen cuando se sumen. Lon: 54,24 ; Lat: 30,00; suma: 84,24; clave: 542430,00 Lon: 30.00 ; Lat: 54,24; suma: 84,24; clave: 300054,24 Espero que te sirva la idea. Un saludo O 21:38, ven., 26/06/2020, Manuel Mendoza escribiu: > 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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es