Hola, Quisiera saber como combinar los niveles de un factor en un "data frame": Por ejemplo, mi "data frame": x y 2.9 a 1.2 a 3.4 b 1.4 b 1.5 c 1.7 c Ahora quiero que los niveles b y c pasen a llamarse nivel d (un nuevo nivel con las 4 observaciones correspondientes a b y c) y mi nuevo data frame tenga un factor con 2 niveles (a y d) en lugar de 3 niveles. Muchas gracias, Manuel -- *Manuel Spínola, Ph.D.* Instituto Internacional en Conservación y Manejo de Vida Silvestre Universidad Nacional Apartado 1350-3000 Heredia COSTA RICA mspinola@una.ac.cr mspinola10@gmail.com Teléfono: (506) 2277-3598 Fax: (506) 2237-7036 Personal website: Lobito de río <https://sites.google.com/site/lobitoderio/> Institutional website: ICOMVIS <http://www.icomvis.una.ac.cr/> [[alternative HTML version deleted]]
Buenas. Una solución trivial para recodificar es:> xx <- data.frame(x=rnorm(10), f1=factor(sample(c("a","b","c"), 10,rep=TRUE)))> xx$f2 <- ifelse(xx$f1=="b" | xx$f1=="c", "d", as.character(xx$f1)) > xx$f2 <- factor(xx$f2)Si no es suficiente, la función recode en el paquete car te será de ayuda. Como comentario general, estaría bien que en vez de pegar unos datos de ejemplo, se pegaran las instrucciones de R para generarlos. Un saludo Gregorio R. Serrano El 6 de diciembre de 2010 12:59, Manuel Spínola <mspinola10@gmail.com>escribió:> Hola, > > Quisiera saber como combinar los niveles de un factor en un "data frame": > > Por ejemplo, mi "data frame": > > x y > > 2.9 a > 1.2 a > 3.4 b > 1.4 b > 1.5 c > 1.7 c > > Ahora quiero que los niveles b y c pasen a llamarse nivel d (un nuevo > nivel con las 4 observaciones correspondientes a b y c) y mi nuevo data > frame tenga un factor con 2 niveles (a y d) en lugar de 3 niveles. > > Muchas gracias, > > Manuel > > -- > *Manuel Spínola, Ph.D.* > Instituto Internacional en Conservación y Manejo de Vida Silvestre > Universidad Nacional > Apartado 1350-3000 > Heredia > COSTA RICA > mspinola@una.ac.cr > mspinola10@gmail.com > Teléfono: (506) 2277-3598 > Fax: (506) 2237-7036 > Personal website: Lobito de río > <https://sites.google.com/site/lobitoderio/> > Institutional website: ICOMVIS <http://www.icomvis.una.ac.cr/> > > [[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]]
x<-c(2.9,1.2,3.4,1.4,1.5,1.7) y<-c("a","a","b","b","c","c") library(car) z<-recode(y,"'b'='d';'c'='d'") z Como te decía Gregorio, en otra ocasión, mándanos los datos ya definidos en código. Se tarda más en meterlos que en recodificarlos. Un saludo. El 6 de diciembre de 2010 12:59, Manuel Spínola<mspinola10 en gmail.com>escribió:> > Hola, > > > > Quisiera saber como combinar los niveles de un factor en un "data frame": > > > > Por ejemplo, mi "data frame": > > > > x y > > > > 2.9 a > > 1.2 a > > 3.4 b > > 1.4 b > > 1.5 c > > 1.7 c > > > > Ahora quiero que los niveles b y c pasen a llamarse nivel d (un nuevo > > nivel con las 4 observaciones correspondientes a b y c) y mi nuevo data > > frame tenga un factor con 2 niveles (a y d) en lugar de 3 niveles. > > > > Muchas gracias, > > > > Manuel > > > > -- > > *Manuel Spínola, Ph.D.* > > Instituto Internacional en Conservación y Manejo de Vida Silvestre > > Universidad Nacional > > Apartado 1350-3000 > > Heredia > > COSTA RICA > > mspinola en una.ac.cr > > mspinola10 en gmail.com > > Teléfono: (506) 2277-3598 > > Fax: (506) 2237-7036 > > Personal website: Lobito de río > > <https://sites.google.com/site/lobitoderio/> > > Institutional website: ICOMVIS<http://www.icomvis.una.ac.cr/> > > > > [[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 > > > >-- Dr. Antonio José Sáez Castillo Dpto. de Estadística e Investigación Operativa Escuela Politécnica Superior de Linares Universidad de Jaén C/ Alfonso X El Sabio 28, 23700 Linares (Jaén) ESPAÑA Tlf. y FAX +34 953 648578
Hola Manuel, Adicional a las opciones mencionadas, tambien podrias usar ifelse(): # tus datos d <- structure(list(x = c(2.9, 1.2, 3.4, 1.4, 1.5, 1.7), y structure(c(1L, 1L, 2L, 2L, 3L, 3L), .Label = c("a", "b", "c"), class = "factor")), .Names c("x", "y"), row.names = c(NA, -6L), class = "data.frame") d # transformacion d$y <- ifelse(y %in% c(''b'', ''c''), ''d'', y) d Para mayor informacion, dale una mirada a ?ifelse, ?"%in%" y ?dput (lo use para generar los datos). Un saludo, Jorge 2010/12/6 Manuel Spínola <>> Hola, > > Quisiera saber como combinar los niveles de un factor en un "data frame": > > Por ejemplo, mi "data frame": > > x y > > 2.9 a > 1.2 a > 3.4 b > 1.4 b > 1.5 c > 1.7 c > > Ahora quiero que los niveles b y c pasen a llamarse nivel d (un nuevo > nivel con las 4 observaciones correspondientes a b y c) y mi nuevo data > frame tenga un factor con 2 niveles (a y d) en lugar de 3 niveles. > > Muchas gracias, > > Manuel > > -- > *Manuel Spínola, Ph.D.* > Instituto Internacional en Conservación y Manejo de Vida Silvestre > Universidad Nacional > Apartado 1350-3000 > Heredia > COSTA RICA > mspinola@una.ac.cr > mspinola10@gmail.com > Teléfono: (506) 2277-3598 > Fax: (506) 2237-7036 > Personal website: Lobito de río > <https://sites.google.com/site/lobitoderio/> > Institutional website: ICOMVIS <http://www.icomvis.una.ac.cr/> > > [[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]]