low into how convert caps r string uppercase

into - Convierta de minúsculas a mayúsculas todos los valores en todas las variables de caracteres en el marco de datos



how to convert into lowercase in r (5)

Tengo un marco de datos mixto de caracteres y variables numéricas.

city,hs_cd,sl_no,col_01,col_02,col_03 Austin,1,2,,46,Female Austin,1,3,,32,Male Austin,1,4,,27,Male Austin,1,5,,20,Female Austin,2,2,,42,Female Austin,2,1,,52,Male Austin,2,3,,25,Male Austin,2,4,,22,Female Austin,3,3,,30,Female Austin,3,1,,65,Female

Quiero convertir todos los caracteres en minúsculas en el marco de datos a mayúsculas. ¿Hay alguna forma de hacer esto en un disparo sin hacerlo repetidamente sobre cada variable de carácter?


Comenzando con los siguientes datos de muestra:

df <- data.frame(v1=letters[1:5],v2=1:5,v3=letters[10:14],stringsAsFactors=FALSE) v1 v2 v3 1 a 1 j 2 b 2 k 3 c 3 l 4 d 4 m 5 e 5 n

Puedes usar :

data.frame(lapply(df, function(v) { if (is.character(v)) return(toupper(v)) else return(v) }))

Lo que da :

v1 v2 v3 1 A 1 J 2 B 2 K 3 C 3 L 4 D 4 M 5 E 5 N


Desde el paquete dplyr también puede usar la función mutate_all () en combinación con toupper (). Esto afectará a las clases de carácter y factor.

library(dplyr) df <- mutate_all(df, funs=toupper)


Es simple con función de aplicación en R

f <- apply(f,2,toupper)

No es necesario comprobar si la columna es de carácter o de otro tipo.


Si necesita lidiar con data.frames que incluyen factores que puede usar:

df = data.frame(v1=letters[1:5],v2=1:5,v3=letters[10:14],v4=as.factor(letters[1:5]),v5=runif(5),stringsAsFactors=FALSE) df v1 v2 v3 v4 v5 1 a 1 j a 0.1774909 2 b 2 k b 0.4405019 3 c 3 l c 0.7042878 4 d 4 m d 0.8829965 5 e 5 n e 0.9702505 sapply(df,class) v1 v2 v3 v4 v5 "character" "integer" "character" "factor" "numeric"

Use mutate_each_ para convertir factores en caracteres y luego convertirlos a mayúsculas

upper_it = function(X){X %>% mutate_each_( funs(as.character(.)), names( .[sapply(., is.factor)] )) %>% mutate_each_( funs(toupper), names( .[sapply(., is.character)] ))} # convert factor to character then uppercase

Da

upper_it(df) v1 v2 v3 v4 1 A 1 J A 2 B 2 K B 3 C 3 L C 4 D 4 M D 5 E 5 N E

Mientras

sapply( upper_it(df),class) v1 v2 v3 v4 v5 "character" "integer" "character" "character" "numeric"


Un comentario lateral aquí para aquellos que usan cualquiera de estas respuestas. La respuesta de Juba es excelente, ya que es muy selectiva si sus variables son cadenas numéricas o de caracteres. Sin embargo, si tiene una combinación (por ejemplo, a1, b1, a2, b2), etc. No convertirá los caracteres correctamente.

Como observa @Trenton Hoffman,

library(dplyr) df <- mutate_each(df, funs(toupper))

afecta a las clases de caracteres y factores y trabaja para "variables mixtas"; por ejemplo, si su variable contiene tanto un carácter como un valor numérico (por ejemplo, a1), ambos se convertirán en un factor. En general, esto no es una gran preocupación, pero si terminas queriendo coincidir con data.frames por ejemplo

df3 <- df1[df1$v1 %in% df2$v1,]

donde se ha convertido df1 y df2 contiene un data.frame no similar o similar, esto puede causar algunos problemas. El trabajo es que tienes que correr brevemente

df2 <- df2 %>% mutate_each(funs(toupper), v1) #or df2 <- df2 %>% mutate_each(df2, funs(toupper)) #and then df3 <- df1[df1$v1 %in% df2$v1,]

Si trabaja con datos genómicos, esto es cuando saber que esto puede ser útil.