Buenas tardes a todos. Quisiera saber que debo tener en cuenta cuando realice una función que transforme variables y como resultado de su aplicación obtenga la variable transformada. Deseo recategorizar una variable ordinal (1 a 5) en dos categorias y he pensado algo así: baja_satis <- function(f) { n <- length(f) f_cat <- character(length(n)) for(i in 1:n) if(f[i] < 4) n[i]== "Insatisfechos" else n[i]=="Satisfechos" f_cat } Evidentemente me falta conocer algunos aspectos de la construcción de funciones. Desde ya les doy las gracias por su ayuda. -- Luis Alberto López González [[alternative HTML version deleted]]
Hola Luis Alberto, Una manera es usando ifelse() de la siguiente manera: Fcat <- function(f, a) ifelse(f<a, "Insatisfecho", "Satisfecho") Fcat(tuvariable, tucriterio) Mas informacion en ?ifelse. Un saludo, Jorge Ivan Velez Sent from my HTC Hero on the Sprint Now Network! On Aug 30, 2010 5:15 PM, "Luis Alberto Lopez Gonzalez" < luialopezg@bt.unal.edu.co> wrote: Buenas tardes a todos. Quisiera saber que debo tener en cuenta cuando realice una función que transforme variables y como resultado de su aplicación obtenga la variable transformada. Deseo recategorizar una variable ordinal (1 a 5) en dos categorias y he pensado algo así: baja_satis <- function(f) { n <- length(f) f_cat <- character(length(n)) for(i in 1:n) if(f[i] < 4) n[i]== "Insatisfechos" else n[i]=="Satisfechos" f_cat } Evidentemente me falta conocer algunos aspectos de la construcción de funciones. Desde ya les doy las gracias por su ayuda. -- Luis Alberto López González [[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]]
Hola Luis: Una forma más sencilla es usar la función cut que convierte variables numéricas en categóricas: cut(f, breaks = c(4,5), labels = c("Insatisfechos", "Satisfechos")) Un Saludo Luciano El 30 de agosto de 2010 18:14, Luis Alberto Lopez Gonzalez < luialopezg@bt.unal.edu.co> escribió:> Buenas tardes a todos. > Quisiera saber que debo tener en cuenta cuando realice una función que > transforme variables y como resultado de su aplicación obtenga la variable > transformada. Deseo recategorizar una variable ordinal (1 a 5) en dos > categorias y he pensado algo así: > > baja_satis <- function(f) > { > n <- length(f) > f_cat <- character(length(n)) > for(i in 1:n) > if(f[i] < 4) n[i]== "Insatisfechos" else n[i]=="Satisfechos" > f_cat > } > > Evidentemente me falta conocer algunos aspectos de la construcción de > funciones. > > Desde ya les doy las gracias por su ayuda. > > -- > Luis Alberto López González > > [[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]]
Yo utilizaría la función específica que propone RCommander: Datos -> Modificar variables del conjunto de datos activo -> Recodificar variables El código que se genera es: Primero creo una variable que se parece a la del ejemplo, también mediante el menú de Rcommander: > binomiales <- as.data.frame(matrix(1+rbinom(20*1, size=4, prob=0.5), ncol=1)) > rownames(binomiales) <- paste("event", 1:20, sep="") > colnames(binomiales) <- "sample" > binomiales$sample [1] 4 3 3 4 3 5 2 3 1 1 1 2 5 1 4 5 1 2 2 3 A continuación recodifico según deseos Luis: > binomiales$variable <- recode(binomiales$sample, ''1:3="Insatisfechos";c( 4,5) = "Satisfechos"; '', as.factor.result=TRUE) > binomiales$variable [1] Satisfechos Insatisfechos Insatisfechos Satisfechos Insatisfechos Satisfechos [7] Insatisfechos Insatisfechos Insatisfechos Insatisfechos Insatisfechos Insatisfechos [13] Satisfechos Insatisfechos Satisfechos Satisfechos Insatisfechos Insatisfechos [19] Insatisfechos Insatisfechos Levels: Insatisfechos Satisfechos La orden "recode" es muy facilita, flexible (incluye lo y hi como valores especiales y la opción else para lo no especificado) y hace exactamente lo que programa Luis. Un saludo. Luciano Selzer escribió:> Hola Luis: > Una forma más sencilla es usar la función cut que convierte > variables numéricas en categóricas: > > cut(f, breaks = c(4,5), labels = c("Insatisfechos", "Satisfechos")) > > Un Saludo > Luciano > > > El 30 de agosto de 2010 18:14, Luis Alberto Lopez Gonzalez < > luialopezg@bt.unal.edu.co> escribió: > > >> Buenas tardes a todos. >> Quisiera saber que debo tener en cuenta cuando realice una función que >> transforme variables y como resultado de su aplicación obtenga la variable >> transformada. Deseo recategorizar una variable ordinal (1 a 5) en dos >> categorias y he pensado algo así: >> >> baja_satis <- function(f) >> { >> n <- length(f) >> f_cat <- character(length(n)) >> for(i in 1:n) >> if(f[i] < 4) n[i]== "Insatisfechos" else n[i]=="Satisfechos" >> f_cat >> } >> >> Evidentemente me falta conocer algunos aspectos de la construcción de >> funciones. >> >> Desde ya les doy las gracias por su ayuda. >> >> -- >> Luis Alberto López González >> >> [[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 >[[alternative HTML version deleted]]