Hola, imaginemos que tengo este vector convertido a factor: # ------- marcas1 <- factor(c('audi', 'opel', 'seat', 'toyota', 'opel')) str(marcas1) Factor w/ 4 levels "audi","opel",..: 1 2 3 4 ¿Como puedo asignar la info de los niveles de marcas1 a un vector nuevo? Por ejemplo: marcas2 <- c('toyota', 'audi', 'audi', 'opel', 'audi') Asumo que marcas2 no va a contener ninguna marca no presente en marcas1. Muchas gracias por vuestra ayuda. [[alternative HTML version deleted]]
Estimado Rubén Coca Creo que su pregunta puede tener dos diferencias, la primera es crear una librería para compartir, pero creo que justo este caso no lo es, pero si lo es avise y busco un código para que copie; la segunda diferencia es sobre los datos, en otras palabras los datos son cargados en una librería y luego le pregunto a la librería cuáles son los niveles que ella misma con los algoritmos correspondientes calculó en forma automática, en este segundo enfoque no hay que preocuparse por el trabajo con niveles, simplemente se pregunta con algo semejante a librería$levels, lo que podría ser es guardar en la memoria esta información para utilizarla posteriormente, por ejemplo marcas <- librería$levels Javier Rubén Marcuzzi El vie., 22 jun. 2018 a las 13:50, Rubén Coca (<ruben.coca en gmail.com>) escribió:> Hola, > imaginemos que tengo este vector convertido a factor: > > # ------- > marcas1 <- factor(c('audi', 'opel', 'seat', 'toyota', 'opel')) > > str(marcas1) > > Factor w/ 4 levels "audi","opel",..: 1 2 3 4 > > > ¿Como puedo asignar la info de los niveles de marcas1 a un vector nuevo? > Por ejemplo: > marcas2 <- c('toyota', 'audi', 'audi', 'opel', 'audi') > > Asumo que marcas2 no va a contener ninguna marca no presente en marcas1. > > Muchas gracias por vuestra ayuda. > > [[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 >[[alternative HTML version deleted]]
Buenas Ruben, Echa un vistazo a parse_factor de la librería forcats. En tu ejemplo seria algo así: library(forcats) parse_factor(marcas2, levels(marcas1)) Esto también lo puedes hacer directamente con factor sin necesidad de instalar otro paquete como forcats factor(marcas2, levels(marcas1)) Pero la ventaja de forcats y parse_factor es que te dará error si alguno de los valores de marcas2 no es valido (no esta entre los niveles que has establecido), lo que si estas usando esto dentro de una función añade una capa extra de seguridad en el funcionamiento de tu funcion. ( sabrás que el nuevo vector tiene algo que no deberia). Espero que te sirva!! El vie., 22 jun. 2018 18:50, Rubén Coca <ruben.coca en gmail.com> escribió:> Hola, > imaginemos que tengo este vector convertido a factor: > > # ------- > marcas1 <- factor(c('audi', 'opel', 'seat', 'toyota', 'opel')) > > str(marcas1) > > Factor w/ 4 levels "audi","opel",..: 1 2 3 4 > > > ¿Como puedo asignar la info de los niveles de marcas1 a un vector nuevo? > Por ejemplo: > marcas2 <- c('toyota', 'audi', 'audi', 'opel', 'audi') > > Asumo que marcas2 no va a contener ninguna marca no presente en marcas1. > > Muchas gracias por vuestra ayuda. > > [[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 >-- *Víctor Granda García* Data Technician v.granda en creaf.uab.cat Tel. +34 93 581 33 53 Campus UAB. Edifici C. 08193 Bellaterra (Barcelona) | *www.creaf.cat* <http://www.creaf.uab.es/cat/index.htm> Abans d'imprimir aquest missatge electrònic penseu en el medi ambient. [[alternative HTML version deleted]]