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]]