Wiem, że jeśli mam ramkę danych z więcej niż 1 kolumną, mogę użyć
colnames(x) <- c("col1","col2")
zmienić nazwy kolumn. Jak to zrobić, jeśli jest to tylko jedna kolumna? Oznacza wektor lub ramkę danych z tylko jedną kolumną.
Przykład:
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
domyślnym argumentem[
, który powoduje, że obiekt „1-kolumnowy” jest konwertowany na wektor ... a wektory tego nie mającolnames
. Przykład tego, co próbowałeś, byłby bardzo pomocny.Odpowiedzi:
próbuje ustawić nazwę drugiej kolumny. Twój obiekt ma tylko jedną kolumnę, więc polecenie zgłasza błąd. To powinno wystarczyć:
źródło
"A,B,C,X,Y,Z"
, gdzie chcę, aby zmienić jego nazwę naY
użyciutestData[379] <- "Y"
.Jest to uogólniony sposób, w jaki nie musisz pamiętać dokładnej lokalizacji zmiennej:
Ten kod wykonuje następujące czynności:
names(df)
sprawdza wszystkie nazwy wdf
[names(df) == old.var.name]
wyodrębnia nazwę zmiennej, którą chcesz sprawdzić<- 'new.var.name'
przypisuje nową nazwę zmiennej.źródło
[names(df) == old.var.name]
faktycznie zwraca wektor z wartościami prawda / fałsz. Może więc zmieniać wiele nazw kolumn, jeśli na przykład używane są wyrażenia regularne.names(df) = sub('pattern', 'replacement', names(df))
. W przeciwnym razie próbujesz ustawić wiele kolumn pod tą samą nazwą.źródło
colnames(GWASDATA_RAWSELECTION)[colnames(GWASDATA_RAWSELECTION)=="^snp$"] <- "Marker"
ponieważ nazwa kolumny nie została zmieniona. Jeśli to zrobięnames(GWASDATA_RAWSELECTION)[names(GWASDATA_RAWSELECTION)=="snp"] <- "Marker"
, zostanie zmieniona nazwa. czego mi brakuje?To stare pytanie, ale warto zauważyć, że możesz teraz korzystać
setnames
zdata.table
pakietu.źródło
setNames
z bazy R.Można to również zrobić za pomocą
plyr
pakietu Hadleya irename
funkcji.Możesz zmienić nazwę według nazwy (bez znajomości pozycji) i wykonywać wiele nazw jednocześnie. Na przykład po scaleniu możesz uzyskać:
Które można następnie zmienić w jednym kroku za pomocą:
źródło
rename
jest teraz również funkcją wdplyr
pakiecie.Myślę, że najlepszym sposobem na zmianę nazw kolumn jest użycie pakietu dplyr w następujący sposób:
Działa to samo w przypadku zmiany nazwy jednej lub wielu kolumn w dowolnym zestawie danych.
źródło
Podoba mi się kolejny styl zmieniania nazw kolumn danych ramki danych jeden po drugim.
gdzie
zwraca przez indeks określonej kolumny.
źródło
which()
to nie jest konieczne.Uważam, że najwygodniejszym sposobem zmiany nazwy pojedynczej kolumny jest użycie
dplyr::rename_at
:źródło
Możesz użyć
rename.vars
wgdata
pakiecie.Jest to szczególnie przydatne, gdy musisz zmienić więcej niż jedną nazwę zmiennej lub chcesz dołączyć lub wstępnie wstawić tekst do nazw zmiennych, a następnie możesz zrobić coś takiego:
Przykład dołączania tekstu do podzbioru nazw zmiennych można znaleźć na stronie : https://stackoverflow.com/a/28870000/180892
źródło
Próbować:
źródło
"A,B,C,X,Y,Z"
, gdzie chcę, aby zmienić jego nazwę naY
użyciutestData[379] <- "Y"
.Prawdopodobnie już tam jest, ale bawiłem się przemianowaniem pól, szukając rozwiązania i próbowałem tego na kaprysu. Pracowałem dla moich celów.
Edycja zaczyna się tutaj ....
To też działa.
źródło
rename
pochodzi ta funkcja?Jeśli wiesz, że twoja ramka danych ma tylko jedną kolumnę, możesz użyć:
names(trSamp) <- "newname2"
źródło
Możesz także spróbować „upData” z pakietu „Hmisc”.
library(Hmisc)
trSamp = upData(trSamp, rename=c(sample.trainer.index..10000. = 'newname2'))
źródło
Pytanie PO zostało dobrze i szczerze udzielone. Oto sztuczka, która może być przydatna w niektórych sytuacjach: częściowe dopasowanie nazwy kolumny, niezależnie od jej pozycji w ramce danych:
Częściowe dopasowanie nazwy:
Kolejny przykład: częściowe dopasowanie w przypadku „interpunkcji”:
To były przykłady, z którymi miałem dziś do czynienia, pomyślałem, że warto się nimi podzielić.
źródło
colnames()
Łatwiej mi było znaleźć argument https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/row%2Bcolnameswybierz kolumnę z ramki danych
i zmień nazwę wybranej kolumny w kolejności,
sprawdź nazwy i wartości, aby się upewnić
źródło
Możemy użyć
rename_with
do zmiany nazwy kolumn za pomocą funkcji (stringr
na przykład funkcji).Rozważ następujące dane
df_1
:Zmień nazwę wszystkich zmiennych za pomocą
dplyr::everything()
:Zmiany nazwy o nazwą cząsteczki z niektórych
dplyr
czasowników (starts_with
,ends_with
,contains
,matches
, ...).Przykład z
.
(x
zmienne):Zmiana nazwy przez klasy z wieloma funkcjami testu klasy, jak
is.integer
,is.numeric
,is.factor
...Przykład z
is.integer
(y
):Ostrzeżenie:
Nie ma to znaczenia, ponieważ jest to po prostu niespójność
seq_along(.)
z funkcją zamiany.źródło
Chciałbym po prostu dodać nową kolumnę do ramki danych o żądanej nazwie i uzyskać dane dla niej z istniejącej kolumny. lubię to:
następnie usuwam starą kolumnę! lubię to:
Ten kod może wydawać się głupi! Ale działa idealnie ...
źródło
Chciałbym po prostu zmienić nazwę kolumny na zestaw danych z nową nazwą, którą chcę, za pomocą następującego kodu: names (zestaw danych) [wartość_indeksu] <- „nowa_kolumna”
źródło
źródło