Re: [R-es] Crear una variable tipo factor a partir de un vector de caracteres
Gracias On Wed, 6 Mar 2019 at 15:47, Xavier-Andoni Tibau Alberdi < xaviti...@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 > 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 < >> xaviti...@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 >>> 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 < xaviti...@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 < > antoniorodriguezandre...@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@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
Re: [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 < xaviti...@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 > 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 < >> xaviti...@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 >>> 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@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]] ___ R-help-es mailing list
Re: [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 (< xaviti...@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 > 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 < > > xaviti...@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 < > antoniorodriguezandre...@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@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 >
Re: [R-es] Crear una variable tipo factor a partir de un vector de caracteres
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 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 < > xaviti...@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 >> 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 < >>> xaviti...@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 < antoniorodriguezandre...@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@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,
Re: [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 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 < > xaviti...@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 >> 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@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@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [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 < xaviti...@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 > 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@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@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Crear una variable tipo factor a partir de un vector de caracteres
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 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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Crear una variable tipo factor a partir de un vector de caracteres
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@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es