tablas studio seleccionar repetidos observaciones identificar extraer eliminar elementos duplicados datos data contar columnas r dataframe

studio - Cómo arreglar espacios en nombres de columna de un data.frame(eliminar espacios, inyectar puntos)?



seleccionar datos en r (8)

Alternativamente, puede lograr los mismos resultados con el paquete stingr.

names(ctm2)<-names(ctm2)%>% stringr::str_replace_all("//s","_")

Después de importar un archivo, siempre trato de eliminar los espacios de los nombres de las columnas para facilitar la referencia a los nombres de las columnas.

¿Hay una mejor manera de hacer esto que usar Transformar y luego quitar la columna extra que crea este comando?

Esto es lo que uso ahora:

names(ctm2) #tranform function does this, but requires some action ctm2<-transform(ctm2,dymmyvar=1) #remove dummy column ctm2$dymmyvar <- NULL names(ctm2)


Asigna los nombres de esta manera. Esto funciona mejor Reemplaza todos los espacios en blanco en el nombre con guión bajo.

names(ctm2)<-gsub("//s","_",names(ctm2))


Existe una solución más elegante y general para ese propósito:

tidy.name.vector <- make.names(name.vector, unique=TRUE)

make.names() hace nombres sintácticamente válidos fuera de los vectores de caracteres. Un nombre sintácticamente válido consiste en letras, números y los caracteres de punto o subrayado y comienza con una letra o el punto no seguido de un número.

Además, flag unique=TRUE permite evitar posibles duplicados en los nuevos nombres de columna.

Como código para implementar

d<-read_delim(urltxt,delim=''/t'',) names(d)<-make.names(names(d),unique = TRUE)


Hay una manera fácil de eliminar espacios en los nombres de columnas en data.table. Tendrá que convertir su marco de datos en tabla de datos.

setnames(x=DT, old=names(DT), new=gsub(" ","",names(DT)))

Country Code se convertirá a CountryCode


Para reemplazar solo el primer espacio en cada columna, también puede hacer:

names(ctm2) <- sub(" ", ".", names(ctm2))

o para reemplazar todos los espacios (lo que parece que sería un poco más útil):

names(ctm2) <- gsub(" ", "_", names(ctm2))

o, como se menciona en la primera respuesta (aunque no de una manera que arreglaría todos los espacios):

spaceless <- function(x) {colnames(x) <- gsub(" ", "_", colnames(x));x} newDF <- spaceless(ctm2)

donde x es el nombre de su data.frame. Prefiero usar "_" para evitar problemas con "." como parte de una identificación.

El punto es que gsub no se detiene en la primera instancia de una coincidencia de patrón.


Simplemente asigne names(ctm2) :

names(ctm2) <- c("itsy", "bitsy", "eeny", "meeny")

o de manera manejada por datos:

names(ctm2) <- paste("myColumn", 1:ncol(ctm2), sep="")

Otra posibilidad es editar su archivo fuente ...


la solución dplyr es

df %>% dplyr::rename_all(funs(make.names(.)))

el crédito va al comentarista


dplyr::select_all() se puede usar para reformatear los nombres de las columnas. Este ejemplo reemplaza espacios y puntos con un guión bajo y convierte todo en minúsculas:

iris %>% select_all(~gsub("//s+|//.", "_", .)) %>% select_all(tolower) %>% head(2) sepal_length sepal_width petal_length petal_width species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa