superponer - varias graficas en r




Cambio de nombres de columna de un marco de datos (11)

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?


¿Lo intentaste solo?

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

?


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 ).


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)

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.


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.


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.


tratar:

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




dataframe