Utilizo la función merge desde hace poco, pero no se me ocurre cómo utilizarla para esto. Yo pienso que se puede hacer con una combinación de ifelse-s pero no sé cómo. Seguro que hay más de una forma ce hacerlo. Quoting José María Mateos <chema en rinzewind.org>:> On Sat, Nov 10, 2018 at 07:54:19PM +0100, Manuel Mendoza wrote: >> Muy buenas. A ver si alguien puede echarme una mano. >> A partir de una matriz de distancias de 29 x 29 he obtenido una df1. >> Ahora tengo 841 filas con la distancia de cada combinación de esas 29 >> categorías. >> Algo así como: >> >> Var1 Var2 Dist >> a a 0 >> a b 3 >> a c 5 >> b a 3 >> b b 0 >> b c 5 >> c ... >> >> En otra df2, de 14563 filas, tengo las variables 1 y 2, y necesito crear >> otra variable con la distancia que aparece en la df1. > > Si entiendo bien el problema, con la función merge tienes justo lo que > necesitas. > > Saludos, > > -- > José María (Chema) Mateos || https://rinzewind.org/ > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es-- Dr Manuel Mendoza Department of Biogeography and Global Change National Museum of Natural History (MNCN) Spanish Scientific Council (CSIC) C/ Serrano 115bis, 28006 MADRID Spain
On Sun, Nov 11, 2018 at 12:43:40AM +0100, Manuel Mendoza wrote:> Utilizo la función merge desde hace poco, pero no se me ocurre cómo > utilizarla para esto. Yo pienso que se puede hacer con una combinación de > ifelse-s pero no sé cómo. Seguro que hay más de una forma ce hacerlo.¿Sería esta la solución?> df1 <- data.frame(Var1 = c('a', 'a', 'a'), Var2 = c('a', 'b', 'c'), Dist = c(0, 3, 4)) > df2 <- data.frame(Var1 = c('a', 'a'), Var2 = c('c', 'b')) > df3 <- merge(df1, df2) > df3Var1 Var2 Dist 1 a b 3 2 a c 4 Saludos, -- José María (Chema) Mateos || https://rinzewind.org/
Fantástico, José María, facilísimo. Tuve que nombrar igual a las dos variables en ambas dfs, y como hay otras variables, indicarle que hiciera el merge en base a esas dos: df3 <- merge(df1, df2, by=c("Var1", "Var2")). Muchas gracias, Manuel Quoting José María Mateos <chema en rinzewind.org>:> On Sun, Nov 11, 2018 at 12:43:40AM +0100, Manuel Mendoza wrote: >> Utilizo la función merge desde hace poco, pero no se me ocurre cómo >> utilizarla para esto. Yo pienso que se puede hacer con una combinación de >> ifelse-s pero no sé cómo. Seguro que hay más de una forma ce hacerlo. > > ¿Sería esta la solución? > >> df1 <- data.frame(Var1 = c('a', 'a', 'a'), Var2 = c('a', 'b', 'c'), >> Dist = c(0, 3, 4)) >> df2 <- data.frame(Var1 = c('a', 'a'), Var2 = c('c', 'b')) >> df3 <- merge(df1, df2) >> df3 > Var1 Var2 Dist > 1 a b 3 > 2 a c 4 > > Saludos, > > -- > José María (Chema) Mateos || https://rinzewind.org/ > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es-- Dr Manuel Mendoza Department of Biogeography and Global Change National Museum of Natural History (MNCN) Spanish Scientific Council (CSIC) C/ Serrano 115bis, 28006 MADRID Spain