[R-es] Función que transforme variables

Carlos J. Gil Bellosta cgb en datanalytics.com
Mar Ago 31 12:51:56 CEST 2010


Otra manera (que vale para este caso concreto):

etiquetas <- unlist( mapply( rep, c( "ins", "sat" ), c(3,2) ) )
satisfaccion <- sample( 1:5, 10, resample = T )

etiquetas[satisfaccion]

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com

El día 31 de agosto de 2010 09:55, José Trujillo Carmona
<trujillo en unex.es> escribió:
> 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 en 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 en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>>
>>>
>>
>>       [[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]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>



Más información sobre la lista de distribución R-help-es