Antonio Rodriguez Andres
2019-Mar-06 14:34 UTC
[R-es] Crear una variable tipo factor a partir de un vector de caracteres
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 en 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 en 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 en 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]]
Xavier-Andoni Tibau Alberdi
2019-Mar-06 14:40 UTC
[R-es] Crear una variable tipo factor a partir de un vector de caracteres
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 en 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 en 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 en 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 en 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]]
Antonio Rodriguez Andres
2019-Mar-06 14:44 UTC
[R-es] Crear una variable tipo factor a partir de un vector de caracteres
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 en 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 en 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 en 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 en 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 en 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]]
Carlos J. Gil Bellosta
2019-Mar-06 14:44 UTC
[R-es] Crear una variable tipo factor a partir de un vector de caracteres
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 en 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 en 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 en 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 en 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 en 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 en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Possibly Parallel Threads
- Crear una variable tipo factor a partir de un vector de caracteres
- Crear una variable tipo factor a partir de un vector de caracteres
- Problema con Histograma con porcentajes usando ggplot
- Problema con Histograma con porcentajes usando ggplot
- Cambiar el formato de datos