437 Stimmen

Wie benennt man eine einzelne Spalte in einem data.frame um?

Ich weiß, wenn ich einen Datenrahmen mit mehr als 1 Spalte habe, dann kann ich verwenden

colnames(x) <- c("col1","col2")

um die Spalten umzubenennen. Wie macht man das, wenn es nur eine Spalte ist? Ich meine einen Vektor oder Datenrahmen mit nur einer Spalte.

Beispiel:

trSamp <- data.frame(sample(trainer$index, 10000))
head(trSamp )
#   sample.trainer.index..10000.
# 1                      5907862
# 2                      2181266
# 3                      7368504
# 4                      1949790
# 5                      3475174
# 6                      6062879

ncol(trSamp)
# [1] 1
class(trSamp)
# [1] "data.frame"
class(trSamp[1])
# [1] "data.frame"
class(trSamp[,1])
# [1] "numeric"
colnames(trSamp)[2] <- "newname2"
# Error in names(x) <- value : 
#   'names' attribute [2] must be the same length as the vector [1]

53voto

Luis Vazquez Punkte 616

Ich denke, der beste Weg, Spalten umzubenennen, ist die Verwendung der dplyr Paket wie dieses:

require(dplyr)
df = rename(df, new_col01 = old_col01, new_col02 = old_col02, ...)

Das Gleiche gilt für die Umbenennung einer oder mehrerer Spalten in einem beliebigen Datensatz.

19voto

moodymudskipper Punkte 42381

Ich finde, dass der bequemste Weg, eine einzelne Spalte umzubenennen, die Verwendung von dplyr::rename_at :

library(dplyr)
cars %>% rename_at("speed",~"new") %>% head     
cars %>% rename_at(vars(speed),~"new") %>% head
cars %>% rename_at(1,~"new") %>% head

#   new dist
# 1   4    2
# 2   4   10
# 3   7    4
# 4   7   22
# 5   8   16
# 6   9   10
  • funktioniert gut in Rohrketten
  • praktisch, wenn Namen in Variablen gespeichert werden
  • arbeitet mit einem Namen oder einem Spaltenindex
  • übersichtlich und kompakt

14voto

jshepherd Punkte 840

Ich mag den nächsten Stil für die Umbenennung von Datenrahmen-Spaltennamen nacheinander.

colnames(df)[which(colnames(df) == 'old_colname')] <- 'new_colname'

wobei

which(colnames(df) == 'old_colname')

gibt nach dem Index der jeweiligen Spalte zurück.

10voto

Ebby Punkte 131

Lassen Sie df den Datenrahmen sein, den Sie mit den Spaltennamen myDays und temp haben. Wenn Sie "myDays" in "Date" umbenennen möchten,

library(plyr)
rename(df,c("myDays" = "Date"))

oder mit Rohr, können Sie

dfNew      <- df %>% 
  plyr::rename(c("myDays" = "Date"))

7voto

Scottieie Punkte 174

Wahrscheinlich gibt es das schon, aber ich habe bei der Suche nach einer Lösung mit der Umbenennung von Feldern gespielt und dies aus einer Laune heraus versucht. Hat für meine Zwecke funktioniert.

Table1$FieldNewName <- Table1$FieldOldName
Table1$FieldOldName <- NULL

Die Bearbeitung beginnt hier....

Das funktioniert auch.

df <- rename(df, c("oldColName" = "newColName"))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X