Christian Bravo Sánchez
2015-Oct-08 07:29 UTC
[R-es] Tranformar falsas variables char en numéricas
Hola usuarios de R, Antes de nada presentarme, soy nuevo en R (antiguo... y bueno actual usuario de SAS), llevo menos de un mes y estoy intentando empezar con pequeñas cosas. Hay un tema que me está llevando bastante tiempo y por más que investigo y hago pruebas no logro saber como se hace; veréis tengo un data.frame el cuál tiene bastante variables y todas ellas clasificadas como char, sin embargo no todas son char sino que existen variables númericas. Dicho esto, lo que necesito de algún modo es recorrer todas las variables y saber cual de ellas son numéricas (y por supuesto transformarlas). Adjunto un ejemplo reproducible: d <- data.frame(char = letters[1:5], fake_char = as.character(1:5), fac = factor(1:5), char_fac = factor(letters[1:5]), num = 1:5, stringsAsFactors = FALSE) d char fake_char fac char_fac num 1 a 1 1 a 1 2 b 2 2 b 2 3 c 3 3 c 3 4 d 4 4 d 4 5 e 5 5 e 5> str(d)'data.frame': 5 obs. of 5 variables: $ char : chr "a" "b" "c" "d" ... $ fake_char: chr "1" "2" "3" "4" ... $ fac : Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 $ char_fac : Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5 $ num : int 1 2 3 4 5 Como véis la variable fake_char es numérica. Por favor tened en cuenta que trabajo con muchas variables, la resolución (he aquí la dificultad para mí) debería recorrer todo el data.frame de manera automática. Muchisimas gracias de antemano. Saludos. [[alternative HTML version deleted]]
> class(d$fake_char)<-"numeric" > str(d)'data.frame': 5 obs. of 5 variables: $ char : chr "a" "b" "c" "d" ... $ fake_char: num 1 2 3 4 5 $ fac : Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 $ char_fac : Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5 $ num : int 1 2 3 4 5 Un saludo. Olivier ----- Mensaje original ----- De: "Christian Bravo Sánchez" <christian.bravo.sanchez en gmail.com> Para: r-help-es en r-project.org Enviados: Jueves, 8 de Octubre 2015 9:29:07 Asunto: [R-es] Tranformar falsas variables char en numéricas Hola usuarios de R, Antes de nada presentarme, soy nuevo en R (antiguo... y bueno actual usuario de SAS), llevo menos de un mes y estoy intentando empezar con pequeñas cosas. Hay un tema que me está llevando bastante tiempo y por más que investigo y hago pruebas no logro saber como se hace; veréis tengo un data.frame el cuál tiene bastante variables y todas ellas clasificadas como char, sin embargo no todas son char sino que existen variables númericas. Dicho esto, lo que necesito de algún modo es recorrer todas las variables y saber cual de ellas son numéricas (y por supuesto transformarlas). Adjunto un ejemplo reproducible: d <- data.frame(char = letters[1:5], fake_char = as.character(1:5), fac = factor(1:5), char_fac = factor(letters[1:5]), num = 1:5, stringsAsFactors = FALSE) d char fake_char fac char_fac num 1 a 1 1 a 1 2 b 2 2 b 2 3 c 3 3 c 3 4 d 4 4 d 4 5 e 5 5 e 5> str(d)'data.frame': 5 obs. of 5 variables: $ char : chr "a" "b" "c" "d" ... $ fake_char: chr "1" "2" "3" "4" ... $ fac : Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 $ char_fac : Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5 $ num : int 1 2 3 4 5 Como véis la variable fake_char es numérica. Por favor tened en cuenta que trabajo con muchas variables, la resolución (he aquí la dificultad para mí) debería recorrer todo el data.frame de manera automática. Muchisimas gracias de antemano. Saludos. [[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
Hola, Una manera muy sencilla de hacerlo es esta: #------------------------------- whatcol <- 0 for(i in 1:ncol(d)){ whatcol[i] <-class(d[,i]) } whatcol #--------------------------------> whatcol <- 0 > for(i in 1:ncol(d)){+ whatcol[i] <-class(d[,i]) + }> whatcol[1] "character" "character" "factor" "factor" "integer" Saludos, Carlos Ortega www.qualityexcellence.es El 8 de octubre de 2015, 9:29, Christian Bravo Sánchez < christian.bravo.sanchez en gmail.com> escribió:> Hola usuarios de R, > > Antes de nada presentarme, soy nuevo en R (antiguo... y bueno actual > usuario de SAS), llevo menos de un mes y estoy intentando empezar con > pequeñas cosas. > > Hay un tema que me está llevando bastante tiempo y por más que investigo y > hago pruebas no logro saber como se hace; veréis tengo un data.frame el > cuál tiene bastante variables y todas ellas clasificadas como char, sin > embargo no todas son char sino que existen variables númericas. Dicho esto, > lo que necesito de algún modo es recorrer todas las variables y saber cual > de ellas son numéricas (y por supuesto transformarlas). > > Adjunto un ejemplo reproducible: > > d <- data.frame(char = letters[1:5], > fake_char = as.character(1:5), > fac = factor(1:5), > char_fac = factor(letters[1:5]), > num = 1:5, stringsAsFactors = FALSE) > d > char fake_char fac char_fac num > 1 a 1 1 a 1 > 2 b 2 2 b 2 > 3 c 3 3 c 3 > 4 d 4 4 d 4 > 5 e 5 5 e 5 > > str(d) > 'data.frame': 5 obs. of 5 variables: > $ char : chr "a" "b" "c" "d" ... > $ fake_char: chr "1" "2" "3" "4" ... > $ fac : Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 > $ char_fac : Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5 > $ num : int 1 2 3 4 5 > > Como véis la variable fake_char es numérica. Por favor tened en cuenta que > trabajo con muchas variables, la resolución (he aquí la dificultad para mí) > debería recorrer todo el data.frame de manera automática. > > Muchisimas gracias de antemano. > > Saludos. > > [[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 >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Hola, Y para cuando sepas un poco más.... #----------------------------- unlist(lapply(d, class)) #-----------------------------> unlist(lapply(d, class))char fake_char fac char_fac num "character" "character" "factor" "factor" "integer" Saludos, Carlos Ortega El 8 de octubre de 2015, 10:01, Carlos Ortega <cof en qualityexcellence.es> escribió:> Hola, > > Una manera muy sencilla de hacerlo es esta: > > #------------------------------- > whatcol <- 0 > for(i in 1:ncol(d)){ > whatcol[i] <-class(d[,i]) > } > whatcol > #-------------------------------- > > > whatcol <- 0 > > for(i in 1:ncol(d)){ > + whatcol[i] <-class(d[,i]) > + } > > whatcol > [1] "character" "character" "factor" "factor" "integer" > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > > El 8 de octubre de 2015, 9:29, Christian Bravo Sánchez < > christian.bravo.sanchez en gmail.com> escribió: > >> Hola usuarios de R, >> >> Antes de nada presentarme, soy nuevo en R (antiguo... y bueno actual >> usuario de SAS), llevo menos de un mes y estoy intentando empezar con >> pequeñas cosas. >> >> Hay un tema que me está llevando bastante tiempo y por más que investigo y >> hago pruebas no logro saber como se hace; veréis tengo un data.frame el >> cuál tiene bastante variables y todas ellas clasificadas como char, sin >> embargo no todas son char sino que existen variables númericas. Dicho >> esto, >> lo que necesito de algún modo es recorrer todas las variables y saber cual >> de ellas son numéricas (y por supuesto transformarlas). >> >> Adjunto un ejemplo reproducible: >> >> d <- data.frame(char = letters[1:5], >> fake_char = as.character(1:5), >> fac = factor(1:5), >> char_fac = factor(letters[1:5]), >> num = 1:5, stringsAsFactors = FALSE) >> d >> char fake_char fac char_fac num >> 1 a 1 1 a 1 >> 2 b 2 2 b 2 >> 3 c 3 3 c 3 >> 4 d 4 4 d 4 >> 5 e 5 5 e 5 >> > str(d) >> 'data.frame': 5 obs. of 5 variables: >> $ char : chr "a" "b" "c" "d" ... >> $ fake_char: chr "1" "2" "3" "4" ... >> $ fac : Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 >> $ char_fac : Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5 >> $ num : int 1 2 3 4 5 >> >> Como véis la variable fake_char es numérica. Por favor tened en cuenta que >> trabajo con muchas variables, la resolución (he aquí la dificultad para >> mí) >> debería recorrer todo el data.frame de manera automática. >> >> Muchisimas gracias de antemano. >> >> Saludos. >> >> [[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 >> > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]