487 Stimmen

Ändern von Spaltennamen in einem Datenrahmen

Ich habe einen Datenrahmen namens "newprice" (siehe unten) und möchte die Spaltennamen in meinem Programm in R ändern.

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

Das ist es, was ich tue:

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

Ich habe dies nicht in eine Schleife gestellt, weil ich möchte, dass jeder Spaltenname anders ist, wie Sie sehen.

Wenn ich mein Programm in die R-Konsole einfüge, ist dies die Ausgabe, die ich erhalte:

> 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(“"

Ich habe ebenfalls versucht, die c() Funktion - zum Beispiel c("premium") anstelle der paste() Funktion, aber ohne Erfolg.

Kann mir jemand helfen, das herauszufinden?

55voto

Scott C Wilson Punkte 17730

Der neue empfohlene Weg, dies zu tun, ist die Verwendung der setNames Funktion. Siehe ?setNames . Da dies eine neue Kopie der Datei data.frame das Ergebnis dem Original zuordnen. data.frame wenn dies Ihre Absicht ist.

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

Neuere Versionen von R geben eine Warnung aus, wenn Sie colnames auf einige der in früheren Antworten vorgeschlagenen Arten.

Wäre dies ein data.table können Sie stattdessen die data.table Funktion setnames , die bestimmte Spaltennamen oder einen einzelnen Spaltennamen ändern kann durch Verweis :

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

28voto

Adam Erickson Punkte 5415

Ähnlich wie bei den anderen:

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

Ganz einfach und leicht zu ändern.

23voto

Sophanna Punkte 307

Verwenden Sie dies, um den Spaltennamen mit der Funktion colname zu ändern.

colnames(newprice)[1] = "premium"
colnames(newprice)[2] = "change"
colnames(newprice)[3] = "newprice"

13voto

discipulus Punkte 2484

Wenn Sie nicht alle, sondern mehrere Spalten auf einmal umbenennen müssen und nur die alten Spaltennamen kennen, können Sie colnames Funktion und %in% Betreiber. Beispiel:

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

Jetzt wollen Sie "schlecht" und "schlechteste" in "gut" und "beste" ändern. Sie können verwenden

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

Dies führt zu

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

13voto

Mehul Katara Punkte 896

Meine Spaltennamen lauten wie folgt

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

Ich möchte den Spaltennamen von Klasse und Geschlecht ändern

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

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