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

Xavier-Andoni Tibau Alberdi x@v|t|b@u @end|ng |rom gm@||@com
Mie Mar 6 15:26:58 CET 2019


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
>

	[[alternative HTML version deleted]]



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