[R-es] Crear una variable tipo factor a partir de un vector de caracteres

Carlos J. Gil Bellosta cgb @end|ng |rom d@t@n@|yt|c@@com
Mie Mar 6 15:44:39 CET 2019


Con R base:

paises <- factor(c("a", "b", "c", "c", "a"))

zonas <- c("norte", "norte", "sur")
names(zonas) <- c("a", "b", "c")

zonas_paises <- paises
levels(zonas_paises) <- zonas[levels(zonas_paises)]
zonas_paises

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com


El mié., 6 mar. 2019 a las 15:41, Xavier-Andoni Tibau Alberdi (<
xavitibau using gmail.com>) escribió:

> No, No. Fíjate en el Ifelse(condición, valor si positivo, valor si
> negativo).
>
> Si, x %in% ca entonces el valor devuelto es "ca", un factor. En caso
> negativo, vamos al siguiente bloque iflese, que comprueba si el país esta
> en el siguiente grupo, na. Si está en na nos devuelve "na". Vamos, que la
> función mira en que grupo esta ese país y te devuelve una string,
> correspondiente al país. Así que ahora tienes un factor, con 5 posibles
> valores ("ca", "na", ..., "ea"). Es lo que quieres no?
>
> Xavier Tibau
>
> Missatge de Antonio Rodriguez Andres <antoniorodriguezandres70 using gmail.com>
> del dia dc., 6 de març 2019 a les 15:34:
>
> > Pero eso es para crear variables binarias tipo 0-1 si el pais pertence a
> > un determinado grupo. Lo que quiero es crear una variable de tipo factor
> > con esos 5 niveles, sabiendo que tengo en el dataframe una variable
> llamada
> > Country, con el nombre del pais.
> > Gracias
> >
> > On Wed, 6 Mar 2019 at 15:27, Xavier-Andoni Tibau Alberdi <
> > xavitibau using gmail.com> wrote:
> >
> >> Buenas,
> >>
> >> Para ello yo uso el operador %in%, que me dice si algo esta dentro de un
> >> vector. Luego hago bucles de if else, pero usando la función iflese().
> Si
> >> país X esta en países lista ca, entonces "ca",etc. Puedes crear una
> función
> >> que englobe ese iflese(), para aplicarla para cada columna del
> dataframe.
> >>
> >> Algo así como:
> >>
> >> func1 <- func (x) {ifelse(x %in% ca, "ca", ifelse(x %in% na,"na", ...,
> >> ifelse(x %in% ea, "ea", "otros"))...)}
> >>
> >> espero que te sirva!
> >>
> >> Xavier Tibau
> >>
> >>
> >>
> >> Missatge de Antonio Rodriguez Andres <
> antoniorodriguezandres70 using gmail.com>
> >> del dia dc., 6 de març 2019 a les 15:10:
> >>
> >>> Hola estimados miembros de la comunidad de R
> >>>
> >>> Tengo un conjunto de datos, donde tengo observaciones por países y por
> >>> año.
> >>> Una de las variables del dataframe es el nombre del país. Queremos
> >>> dividir
> >>> los países, que son países africanos de acuerdo a 5 regiones: norte de
> >>> africa, africa del este, sur africa, etc
> >>>
> >>> Yo lo que he hecho ha sido crear vectores con el nombre de cada uno de
> >>> los
> >>> países en cada uno de ellos, por ejemplo este de Africa Central,
> >>>
> >>> ca <- c("Angola", "Cameroon", "Cabo Verde", "Central African Republic",
> >>> "Chad","Equatorial Guinea", "Eritrea", "Ethiopia",
> >>>         "Gabon", "Sao Tome and Principe")
> >>> class(ca)
> >>> character
> >>>
> >>> luego hice un ifelse para crear una variable binaria 1 si es pais de
> >>> Central Africa y cero sino lo es
> >>>
> >>> afdata$Country.centralafrica <- ifelse(afdata$Country %in% ca,1,0)
> >>>
> >>> Sin embargo, para el análisis podría ser más interesante crear una
> >>> variable
> >>> nueva por ejemplo region y tratarla como factor,. Mi pregunta es como
> >>> podria pasar esos 5 vectores con el nombre de los paises de cada
> region a
> >>> una sola variable tratada como un factor y con esos 5 niveles ( 5
> >>> regiones). Lo que he tratado es de hacer esto para genera una nueva
> >>> variable en el dataframe, pero me da que todo es igual false, en el
> >>> valor,
> >>>
> >>> afdata$region <- with(afdata,{
> >>>   (Country == "ca" |Country == "na" | Country == "sa" | Country ==
> "wa" |
> >>> Country == "ea")
> >>> })
> >>> Debo de indicar otra condición?
> >>>
> >>> Agradezco alguna pista
> >>>
> >>> --
> >>>
> >>> Member, Editorial Committee, *The Economic and Labour Relations Review*
> >>> (a
> >>> SAGE journal)
> >>>
> >>> http://elr.sagepub.com/
> >>>
> >>> Member, Editorial Committee, African Journal of Economic and Management
> >>> Studies
> >>>
> >>>
> >>>
> http://emeraldgrouppublishing.com/products/journals/editorial_team.htm?id=ajems
> >>>
> >>> https://www.researchgate.net/profile/Antonio_Andres (Research Gate
> >>> profile)
> >>>
> >>>         [[alternative HTML version deleted]]
> >>>
> >>> _______________________________________________
> >>> R-help-es mailing list
> >>> R-help-es using r-project.org
> >>> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>>
> >>
> >
> > --
> >
> > Member, Editorial Committee, *The Economic and Labour Relations Review*
> (a
> > SAGE journal)
> >
> > http://elr.sagepub.com/
> >
> > Member, Editorial Committee, African Journal of Economic and Management
> > Studies
> >
> >
> >
> http://emeraldgrouppublishing.com/products/journals/editorial_team.htm?id=ajems
> >
> > https://www.researchgate.net/profile/Antonio_Andres (Research Gate
> > profile)
> >
> >
> >
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es