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 <c...@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 (< > 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 <antoniorodriguezandre...@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 < >> > 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 >> 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