varias superponer studio lineas graficos graficas r dataframe

superponer - Cambio de nombres de columna de un marco de datos



superponer graficas en r (16)

¿Lo intentaste solo?

names(newprice)[1]<-"premium"

?

Tengo un marco de datos llamado "newprice" (ver más abajo) y quiero cambiar los nombres de columna en mi programa en R.

> newprice Chang. Chang. Chang. 1 100 36 136 2 120 -33 87 3 150 14 164

De hecho esto es lo que estoy haciendo:

names(newprice)[1]<-paste("premium") names(newprice)[2]<-paste("change") names(newprice)[3]<-paste("newprice")

No he puesto esto en un bucle porque quiero que el nombre de cada columna sea diferente como se ve.

Cuando pego mi programa en la consola R, esta es la salida que me da:

> names(newprice)[1]<-paste(“premium”) Error: unexpected input in "names(newprice)[1]<-paste(“" > names(newprice)[2]<-paste(“change”) Error: unexpected input in "names(newprice)[2]<-paste(“" > names(newprice)[3]<-paste(“newpremium”) Error: unexpected input in "names(newprice)[3]<-paste(“"

Igualmente he intentado usar la función c() , por ejemplo, c("premium") , en lugar de la función paste() , pero sin éxito.

¿Podría alguien ayudarme a resolver esto?


El error es causado por las "comillas inteligentes" (o como se llamen). La lección aquí es, "no escriba su código en un ''editor'' que convierta comillas en comillas inteligentes".

names(newprice)[1]<-paste(“premium”) # error names(newprice)[1]<-paste("premium") # works

Además, no necesita paste("premium") (la llamada a paste es redundante) y es una buena idea colocar espacios alrededor de <- para evitar confusiones (por ejemplo, x <- -10; if(x<-3) "hi" else "bye"; x ).


En caso de que tengamos 2 marcos de datos los siguientes trabajos

library(dplyr) mtcars %>% tibble::rownames_to_column(''car_model'') %>% # convert rowname to a column. tibble must be installed. select(car_model, est_mpg = mpg, horse_power = hp, everything()) %>% # rename specific columns and reorder rename(weight = wt, cylinders = cyl) %>% # another option for renaming specific columns that keeps everything by default head(2) car_model est_mpg horse_power cylinders disp drat weight qsec vs am gear carb 1 Mazda RX4 21 110 6 160 3.9 2.620 16.46 0 1 4 4 2 Mazda RX4 Wag 21 110 6 160 3.9 2.875 17.02 0 1 4 4

Cambio los nombres de DF1 como sigue

iris %>% rename_all(~gsub("//s+|//.", "_", .)) %>% rename_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


Esto puede ser útil:

rename.columns=function(df,changelist){ #renames columns of a dataframe for(i in 1:length(names(df))){ if(length(changelist[[names(df)[i]]])>0){ names(df)[i]= changelist[[names(df)[i]]] } } df }

df = rename.columns (df, list (old.column = ''new.column.name''))


Hay un par de opciones con dplyr::rename() y dplyr::select() :

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

También hay tres variantes de ámbito de dplyr::rename() : dplyr::rename_all() para todos los nombres de columna, dplyr::rename_if() para nombres de columna de orientación condicional, y dplyr::rename_at() para columnas con nombre seleccionado. El siguiente ejemplo reemplaza espacios y puntos con un guión bajo y convierte todo a minúsculas:

DF1<-data.frame(''a'', ''b'') DF2<-data.frame(''c'',''d'')

dplyr::select_all() también se puede utilizar de una manera similar:

colnames(DF1)<- colnames(DF2)


La nueva forma recomendada de hacer esto es usar la función setNames . Ver ?setNames . Dado que esto crea una nueva copia del data.frame , asegúrese de asignar el resultado al data.frame original, si esa es su intención.

data_frame <- setNames(data_frame, c("premium","change","newprice"))

Las versiones más recientes de R le colnames si utiliza colnames de colnames en algunas de las formas sugeridas por las respuestas anteriores.

Si se tratara de una data.table , podría usar los data.table función setnames , que pueden modificar nombres de columna específicos o un nombre de columna única por referencia :

setnames(data_table, "old-name", "new-name")


Mis nombres de columna son los siguientes

colnames(t) [1] "Class" "Sex" "Age" "Survived" "Freq"

Quiero cambiar el nombre de la columna de Clase y Sexo

colnames(t)=c("STD","Gender","AGE","SURVIVED","FREQ")


Podrías haberlo hecho de inmediato.

names(newprice) <- c("premium","change","newprice")

El comando de pegar que está utilizando toma 2 argumentos al menos. Funciona como la función de concatenar en Excel, por lo que creo que le está dando un error.


Sólo para corregir y extender ligeramente la respuesta de Scott Wilson.
También puede utilizar la función setnames de setnames en data.frames.

No espere que la operación se setnames pero puede esperar que los setnames los setnames sean más eficientes para el consumo de memoria, ya que actualiza los nombres de las columnas por referencia. Esto puede ser seguido con la función de address , ver más abajo.

library(data.table) set.seed(123) n = 1e8 df = data.frame(bad=sample(1:3, n, TRUE), worse=rnorm(n)) address(df) #[1] "0x208f9f00" colnames(df) <- c("good", "better") address(df) #[1] "0x208fa1d8" rm(df) dt = data.table(bad=sample(1:3, n, TRUE), worse=rnorm(n)) address(dt) #[1] "0x535c830" setnames(dt, c("good", "better")) address(dt) #[1] "0x535c830" rm(dt)

Así que si está alcanzando sus límites de memoria, puede considerar usar este en su lugar.


Si necesita renombrar no todas las columnas, sino varias, a la vez, cuando solo conoce los nombres antiguos de las columnas, puede usar la función colnames y el operador %in% . Ejemplo:

df = data.frame(bad=1:3, worse=rnorm(3), worst=LETTERS[1:3]) bad worse worst 1 1 -0.77915455 A 2 2 0.06717385 B 3 3 -0.02827242 C

Ahora desea cambiar "malo" y "peor" a "bueno" y "mejor". Puedes usar

colnames(df)[which(colnames(df) %in% c("bad","worst") )] <- c("good","best")

Esto resulta en

good worse best 1 1 -0.6010363 A 2 2 0.7336155 B 3 3 0.9435469 C


Similar a los demás:

cols <- c("premium","change","newprice") colnames(dataframe) <- cols

Bastante simple y fácil de modificar.


Tuve el mismo problema y esta pieza de código funcionó para mí.

names(data)[names(data) == "oldVariableName"] <- "newVariableName"

En resumen, este código hace lo siguiente:

names(data) busca en todos los nombres en el marco de data ( data )

[names(data) == oldVariableName] extrae el nombre de la variable ( oldVariableName ) al que desea que se le oldVariableName nombre y <- "newVariableName" asigna el nuevo nombre de la variable.


Usa la función colnames() :

R> X <- data.frame(bad=1:3, worse=rnorm(3)) R> X bad worse 1 1 -2.440467 2 2 1.320113 3 3 -0.306639 R> colnames(X) <- c("good", "better") R> X good better 1 1 -2.440467 2 2 1.320113 3 3 -0.306639

También puede subcontratar:

R> colnames(X)[2] <- "superduper"


Usted puede simplemente hacer la edición por:

newprice <- edit(newprice)

y cambiar el nombre de la columna manualmente.


Yo uso esto:

colnames(dataframe)[which(names(dataframe) == "columnName")] <- "newColumnName"


tratar:

names(newprice) <- c("premium", "change", "newprice")