Ich weiß, wenn ich einen Datenrahmen mit mehr als einer Spalte habe, kann ich verwenden
colnames(x) <- c("col1","col2")
um die Spalten umzubenennen. Wie mache ich das, wenn es nur eine Spalte ist? Bedeutet 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]
drop=TRUE
Standardargument to verwirrt[
, das bewirkt, dass ein "1-Spalten" -Objekt in einen Vektor konvertiert wird ... und Vektoren nicht habencolnames
. Ein Beispiel für das, was Sie versucht haben, wäre sehr hilfreich.Antworten:
versucht, den Namen der zweiten Spalte festzulegen. Ihr Objekt hat nur eine Spalte, daher gibt der Befehl einen Fehler aus. Dies sollte ausreichen:
quelle
"A,B,C,X,Y,Z"
wo ich will es umbenennen zuY
verwendentestData[379] <- "Y"
.Dies ist eine verallgemeinerte Methode, bei der Sie sich nicht an die genaue Position der Variablen erinnern müssen:
Dieser Code macht so ziemlich Folgendes:
names(df)
schaut in alle Namen in derdf
[names(df) == old.var.name]
extrahiert den Variablennamen, den Sie überprüfen möchten<- 'new.var.name'
weist den neuen Variablennamen zu.quelle
[names(df) == old.var.name]
tatsächlich ein Vektor mit wahren / falschen Werten zurückgegeben wird. So kann es mehrere Spaltennamen ändern, wenn beispielsweise reguläre Ausdrücke verwendet werden.names(df) = sub('pattern', 'replacement', names(df))
. Andernfalls würden Sie versuchen, mehrere Spalten auf denselben Namen festzulegen.quelle
colnames(GWASDATA_RAWSELECTION)[colnames(GWASDATA_RAWSELECTION)=="^snp$"] <- "Marker"
, weil die Spalte nicht umbenannt wird. Wenn ich es tuenames(GWASDATA_RAWSELECTION)[names(GWASDATA_RAWSELECTION)=="snp"] <- "Marker"
, wird es umbenannt. Was vermisse ich?Dies ist eine alte Frage, aber es ist erwähnenswert, dass Sie sie jetzt
setnames
aus demdata.table
Paket verwenden können.quelle
setNames
von der Basis R.Dies kann auch mit Hadleys
plyr
Paket und derrename
Funktion erfolgen.Sie können nach dem Namen umbenennen (ohne die Position zu kennen) und mehrere Umbenennungen gleichzeitig durchführen. Nach einer Zusammenführung könnten Sie beispielsweise Folgendes erhalten:
Was Sie dann in einem Schritt umbenennen können mit:
quelle
rename
ist jetzt auch eine Funktion imdplyr
Paket.Ich denke, der beste Weg, Spalten umzubenennen, ist die Verwendung des dplyr- Pakets wie folgt :
Dies funktioniert genauso, wenn eine oder mehrere Spalten in einem Datensatz umbenannt werden.
quelle
Ich mag den nächsten Stil zum Umbenennen von Datenrahmenspaltennamen nacheinander.
wo
Gibt nach dem Index der jeweiligen Spalte zurück.
quelle
which()
ist nicht nötig.Ich finde, dass der bequemste Weg, eine einzelne Spalte umzubenennen, die Verwendung von
dplyr::rename_at
:quelle
Sie können das
rename.vars
imgdata
Paket verwenden.Dies ist besonders nützlich, wenn Sie mehr als einen Variablennamen ändern müssen oder wenn Sie Text an die Variablennamen anhängen oder vorhängen möchten. Dann können Sie Folgendes tun:
Ein Beispiel für das Anhängen von Text an eine Teilmenge von Variablennamen finden Sie unter: https://stackoverflow.com/a/28870000/180892
quelle
Versuchen:
quelle
"A,B,C,X,Y,Z"
wo ich es umbenennen möchtenY
verwendentestData[379] <- "Y"
.Dies ist wahrscheinlich schon da draußen, aber ich habe bei der Suche nach einer Lösung mit dem Umbenennen von Feldern gespielt und dies aus einer Laune heraus versucht. Arbeitete für meine Zwecke.
Die Bearbeitung beginnt hier ....
Das funktioniert auch.
quelle
rename
Funktion?Wenn Sie wissen, dass Ihr Datenrahmen nur eine Spalte enthält, können Sie Folgendes verwenden:
names(trSamp) <- "newname2"
quelle
Sie können auch 'upData' aus dem 'Hmisc'-Paket ausprobieren.
library(Hmisc)
trSamp = upData(trSamp, rename=c(sample.trainer.index..10000. = 'newname2'))
quelle
Die Frage des OP wurde wirklich beantwortet. Hier ist jedoch ein Trick, der in einigen Situationen nützlich sein kann: teilweise Übereinstimmung des Spaltennamens, unabhängig von seiner Position in einem Datenrahmen:
Teilweise Übereinstimmung mit dem Namen:
Ein weiteres Beispiel: partielle Übereinstimmung bei Vorhandensein von "Interpunktion":
Dies waren Beispiele, mit denen ich mich heute befassen musste. Ich dachte, es könnte sich lohnen, sie zu teilen.
quelle
Ich fand das
colnames()
Argument einfacher https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/row%2BcolnamesWählen Sie eine Spalte aus dem Datenrahmen aus
und benennen Sie die ausgewählte Spalte der Reihe nach um.
Überprüfen Sie die Namen und Werte, um sicherzugehen
quelle
Wir können
rename_with
Spalten mit einer Funktion umbenennen (stringr
z. B. Funktionen).Betrachten Sie die folgenden Daten
df_1
:Benennen Sie alle Variablen um mit
dplyr::everything()
:Umbenennen von Namen Teilchen mit einigen
dplyr
Verben (starts_with
,ends_with
,contains
,matches
, ...).Beispiel mit
.
(x
Variablen):Benennen von Klasse mit vielen Funktionen der Klasse Test, wie
is.integer
,is.numeric
,is.factor
...Beispiel mit
is.integer
(y
):Die Warnung:
Es ist nicht relevant, da es nur eine Inkonsistenz
seq_along(.)
mit der Ersetzungsfunktion ist.quelle
Ich würde dem Datenrahmen einfach eine neue Spalte mit dem gewünschten Namen hinzufügen und die Daten dafür aus der vorhandenen Spalte abrufen. so was:
dann entferne ich die alte Spalte! so was:
Dieser Code könnte albern erscheinen! Aber es funktioniert perfekt ...
quelle
Ich würde einfach einen Spaltennamen in das Dataset mit dem neuen Namen ändern, den ich mit dem folgenden Code möchte: names (Dataset) [index_value] <- "new_col_name"
quelle
quelle