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 cada nombre de columna sea diferente como ves.
Cuando pego mi programa en la consola R, este es el resultado 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(“"
También intenté usar la c()
función, por ejemplo c("premium")
, en lugar depaste()
función, pero fue en vano.
¿Alguien podría ayudarme a resolver esto?
is.matrix
ostr
.colnames(newprice)<- c("premium","change","newprice")
Respuestas:
Usa la
colnames()
función:También puedes subconjuntar:
fuente
colnames(X)[c(1,2)] <- c("good", "better")
setnames()
en eldata.table
paquete. Use algo comosetnames(DT,"b","B")
osetnames(DT,c("a","E"),c("A","F"))
q1
, tratando de mutar el marco de datos usandodplyr
como en losq1 <- q1 %>% mutate(rel_count = count / 482462)
resultados del errorError in mutate_impl(.data, dots) : unknown column 'days'
(dondedays
se le da un nuevo nombre a la columna). Esto es realmente frustrante.Yo uso esto:
fuente
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".
Además, no necesita
paste("premium")
(la llamada apaste
es redundante) y es una buena idea colocar espacios<-
para evitar confusiones (por ejemplox <- -10; if(x<-3) "hi" else "bye"; x
).fuente
¿Intentaste solo:
names(newprice)[1]<-"premium"
?
fuente
La nueva forma recomendada de hacer esto es usar la
setNames
función. Ver?setNames
. Dado que esto crea una nueva copia deldata.frame
, asegúrese de asignar el resultado al originaldata.frame
, si esa es su intención.Las versiones más recientes de R te avisarán si usas
colnames
algunas de las formas sugeridas por las respuestas anteriores.Si esto fuera un
data.table
lugar, podría usar ladata.table
funciónsetnames
, que puede modificar nombres de columna específicos o un solo nombre de columna por referencia :fuente
Tuve el mismo problema y este código funcionó para mí.
En resumen, este código hace lo siguiente:
names(data)
examina todos los nombres en el marco de datos (data
)[names(data) == oldVariableName]
extrae el nombre de variable (oldVariableName
) que desea renombrar y<- "newVariableName"
asigna el nuevo nombre de variablefuente
Similar a los demás:
Bastante simple y fácil de modificar.
fuente
tratar:
fuente
Si necesita renombrar no todas las columnas, sino varias, a la vez, cuando solo conoce los nombres de las columnas anteriores, puede usar la
colnames
función y el%in%
operador. Ejemplo:Ahora desea cambiar "malo" y "peor" a "bueno" y "mejor". Puedes usar
Esto resulta en
fuente
Use esto para cambiar el nombre de la columna por la función colname.
fuente
Puedes hacer la edición de la siguiente manera:
y cambie el nombre de la columna manualmente.
fuente
> locanatmodelset<-edit(locanatmodelset) Error in edit.data.frame(locanatmodelset) : can only handle vector and factor elements
Los nombres de mi columna son los siguientes
Quiero cambiar el nombre de la columna de Clase y Sexo
fuente
Hay un par de opciones con
dplyr::rename()
ydplyr::select()
:También hay tres variantes de ámbito
dplyr::rename()
:dplyr::rename_all()
para todos los nombres de columna,dplyr::rename_if()
para orientar condicionalmente los nombres de columna ydplyr::rename_at()
para seleccionar columnas con nombre. El siguiente ejemplo reemplaza espacios y puntos con un guión bajo y convierte todo a minúsculas:dplyr::select_all()
También se puede utilizar de manera similar:fuente
Solo para corregir y extender ligeramente la respuesta de Scott Wilson.
Puedes usar data.table's
setnames
función data.table en data.frames.No espere acelerar la operación, pero puede esperar
setnames
que sea más eficiente para el consumo de memoria, ya que actualiza los nombres de columna por referencia. Esto se puede rastrear con laaddress
función, ver más abajo.Entonces, si está alcanzando sus límites de memoria, puede considerar usar este en su lugar.
fuente
Esto puede ser útil:
fuente
En caso de que tengamos 2 marcos de datos, los siguientes trabajos
Cambiamos los nombres de DF1 de la siguiente manera
fuente