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