[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:46:54 CET 2019


Pues ahí lo tienes. Usa %in% para ver si esta en ese grupo, y en caso de
estarlo pones el nombre del grupo. Aquí un ejemplo.
https://www.datamentor.io/r-programming/ifelse-function/

Saludos,

Xavi

Missatge de Antonio Rodriguez Andres <antoniorodriguezandres70 using gmail.com>
del dia dc., 6 de març 2019 a les 15:44:

> Si lo que quiero es crear una variable llamada por ejemplo region (del
> tipo factor) con esos 5 valores
>
> On Wed, 6 Mar 2019 at 15:41, Xavier-Andoni Tibau Alberdi <
> xavitibau using gmail.com> wrote:
>
>> 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)
>>>
>>>
>>>
>
> --
>
> 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