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

Antonio Rodriguez Andres @nton|orodr|guez@ndre@70 @end|ng |rom gm@||@com
Vie Mar 8 10:50:20 CET 2019


Aqui adjunto el código que finalmente funcionó, por si alguien pudiera
necesitarlo en el futuro en la lista


func1 <- function(x){
  ifelse(x %in% ca, "Central Africa", ifelse(x %in% ea,"East Africa",
ifelse(x%in% sa, "South Africa", ifelse(x%in% wa, "West Africa",
ifelse(x%in% na, "North Africa", "otros")))))
}

afdata$region <- func1(afdata$Country)

afdata$region = as.factor(afdata$region)

On Wed, 6 Mar 2019 at 15:44, Carlos J. Gil Bellosta <cgb using datanalytics.com>
wrote:

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

-- 

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



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