Usuario R
2011-Jan-31 16:26 UTC
[R-es] Reemplazar valores en data frame con valores de otro data frame
Hola erreros, Tengo dos data frame, que no tienen ni el mismo numero de filas ni de columnas. Uno de ellos tiene una columna con nombres largos. El otro sólo contiene una lista de todos los posibles valores de esa columna y un numero. Es digamos una tabla sólo para identificar los nombres y poder trabajar con los numeros en vez de con los nombres largos. Un ejemplo muy corto sería: data frame de identificadores: x id.x a 1 b 2 c 3 d 4 e 5 Data frame de datos: y data e 667766 e 666666 b 666666 c 666666 Lo que quiero es hacer una función que me cambie la columna y por los numeros de la primera tabla. En este ejemplo sería: y data 5 667766 5 666666 2 666666 3 666666 Pensaba que me iba a funcionar esto: attach( x ) attach( y ) id.x[ x %in% y ] Pero igual hay alguna funcion que reemplaza valores de un data frame en función del correspondiente de otro data frame. Comoceis alguna solución sencilla? Gracias, un saludo [[alternative HTML version deleted]]
Xavi de Blas
2011-Jan-31 16:32 UTC
[R-es] Reemplazar valores en data frame con valores de otro data frame
Hola Si todo eso sale de un SQL, podrías sacar los datos bien ya en la consulta. Saludos 2011/1/31 Usuario R <r.user.spain en gmail.com>:> Hola erreros, > > Tengo dos data frame, que no tienen ni el mismo numero de filas ni de > columnas. Uno de ellos tiene una columna con nombres largos. El otro sólo > contiene una lista de todos los posibles valores de esa columna y un numero. > Es digamos una tabla sólo para identificar los nombres y poder trabajar con > los numeros en vez de con los nombres largos. > > Un ejemplo muy corto sería: > data frame de identificadores: > x id.x > a 1 > b 2 > c 3 > d 4 > e 5 > > Data frame de datos: > y data > e 667766 > e 666666 > b 666666 > c 666666 > > > Lo que quiero es hacer una función que me cambie la columna y por los > numeros de la primera tabla. En este ejemplo sería: > > y data > 5 667766 > 5 666666 > 2 666666 > 3 666666 > > Pensaba que me iba a funcionar esto: > attach( x ) > attach( y ) > id.x[ x %in% y ] > > Pero igual hay alguna funcion que reemplaza valores de un data frame > en función del correspondiente de otro data frame. Comoceis alguna solución > sencilla? > > Gracias, un saludo > > [[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 > >
Usuario R
2011-Jan-31 16:38 UTC
[R-es] Reemplazar valores en data frame con valores de otro data frame
Hola Xavi, Tu comentario es muy apropiado, porque eso mismo he comentado por aqui. Desgraciadamente de momento no tengo esa posibilidad. necesito algo rápido aunque sea un poco enrevesado. Conoces alguna solución en R? Gracias! El 31 de enero de 2011 17:32, Xavi de Blas <xaviblas@gmail.com> escribió:> Hola > > Si todo eso sale de un SQL, podrías sacar los datos bien ya en la consulta. > > Saludos > > > 2011/1/31 Usuario R <r.user.spain@gmail.com>: > > Hola erreros, > > > > Tengo dos data frame, que no tienen ni el mismo numero de filas ni de > > columnas. Uno de ellos tiene una columna con nombres largos. El otro sólo > > contiene una lista de todos los posibles valores de esa columna y un > numero. > > Es digamos una tabla sólo para identificar los nombres y poder trabajar > con > > los numeros en vez de con los nombres largos. > > > > Un ejemplo muy corto sería: > > data frame de identificadores: > > x id.x > > a 1 > > b 2 > > c 3 > > d 4 > > e 5 > > > > Data frame de datos: > > y data > > e 667766 > > e 666666 > > b 666666 > > c 666666 > > > > > > Lo que quiero es hacer una función que me cambie la columna y por los > > numeros de la primera tabla. En este ejemplo sería: > > > > y data > > 5 667766 > > 5 666666 > > 2 666666 > > 3 666666 > > > > Pensaba que me iba a funcionar esto: > > attach( x ) > > attach( y ) > > id.x[ x %in% y ] > > > > Pero igual hay alguna funcion que reemplaza valores de un data frame > > en función del correspondiente de otro data frame. Comoceis alguna > solución > > sencilla? > > > > Gracias, un saludo > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > >-- Patricia García González r-es.org/ [[alternative HTML version deleted]]
Javier Muñoz
2011-Jan-31 16:39 UTC
[R-es] Reemplazar valores en data frame con valores de otro data frame
Hola. Si los data.frame se llaman ''identificadores'' y ''datos'' puedes hacer: rownames(identificadores) <- identificadores$x #no debe haber valores repetidos en la columna ''x'' (son ids) datos$y <- identificadores[as.character(datos$y), "id.x"] #el as.character es por si datos$y es un factor El 31 de enero de 2011 17:26, Usuario R <r.user.spain@gmail.com> escribió:> Hola erreros, > > Tengo dos data frame, que no tienen ni el mismo numero de filas ni de > columnas. Uno de ellos tiene una columna con nombres largos. El otro sólo > contiene una lista de todos los posibles valores de esa columna y un > numero. > Es digamos una tabla sólo para identificar los nombres y poder trabajar con > los numeros en vez de con los nombres largos. > > Un ejemplo muy corto sería: > data frame de identificadores: > x id.x > a 1 > b 2 > c 3 > d 4 > e 5 > > Data frame de datos: > y data > e 667766 > e 666666 > b 666666 > c 666666 > > > Lo que quiero es hacer una función que me cambie la columna y por los > numeros de la primera tabla. En este ejemplo sería: > > y data > 5 667766 > 5 666666 > 2 666666 > 3 666666 > > Pensaba que me iba a funcionar esto: > attach( x ) > attach( y ) > id.x[ x %in% y ] > > Pero igual hay alguna funcion que reemplaza valores de un data frame > en función del correspondiente de otro data frame. Comoceis alguna solución > sencilla? > > Gracias, un saludo > > [[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]]
Gregorio R. Serrano
2011-Jan-31 17:06 UTC
[R-es] Reemplazar valores en data frame con valores de otro data frame
No sé si esto es lo que quieres:> (xx <- data.frame(x=factor(c(''a'', ''b'', ''c'', ''d'', ''e'')), id.x=c(1:5)))x id.x 1 a 1 2 b 2 3 c 3 4 d 4 5 e 5> (yy <- data.frame(y=factor(c(''e'', ''e'', ''b'', ''c'')), data=c(67, 66, 66,66))) y data 1 e 67 2 e 66 3 b 66 4 c 66> (merge(xx, yy, by.x="x", by.y="y"))x id.x data 1 b 2 66 2 c 3 66 3 e 5 67 4 e 5 66 Por mi parte, es la última vez que respondo en esta lista si quien pregunta no facilita las cosas, como crear los df de ejemplo. Un saludo Gregorio R. Serrano El 31 de enero de 2011 17:26, Usuario R <r.user.spain@gmail.com> escribió:> Hola erreros, > > Tengo dos data frame, que no tienen ni el mismo numero de filas ni de > columnas. Uno de ellos tiene una columna con nombres largos. El otro sólo > contiene una lista de todos los posibles valores de esa columna y un > numero. > Es digamos una tabla sólo para identificar los nombres y poder trabajar con > los numeros en vez de con los nombres largos. > > Un ejemplo muy corto sería: > data frame de identificadores: > x id.x > a 1 > b 2 > c 3 > d 4 > e 5 > > Data frame de datos: > y data > e 667766 > e 666666 > b 666666 > c 666666 > > > Lo que quiero es hacer una función que me cambie la columna y por los > numeros de la primera tabla. En este ejemplo sería: > > y data > 5 667766 > 5 666666 > 2 666666 > 3 666666 > > Pensaba que me iba a funcionar esto: > attach( x ) > attach( y ) > id.x[ x %in% y ] > > Pero igual hay alguna funcion que reemplaza valores de un data frame > en función del correspondiente de otro data frame. Comoceis alguna solución > sencilla? > > Gracias, un saludo > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Dr. Gregorio R. Serrano Dpto. Economía Cuantitativa (UCM) Voz:+34 91394 2361 Fax:+34 91394 2591 http://www.grserrano.es [[alternative HTML version deleted]]