[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
Mie Mar 6 15:48:48 CET 2019


Gracias

On Wed, 6 Mar 2019 at 15:47, Xavier-Andoni Tibau Alberdi <
xavitibau using gmail.com> wrote:

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

-- 

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