Podoba mi się funkcja zmiany nazwy Plyra rename
. Niedawno zacząłem używać dplyr i zastanawiałem się, czy istnieje łatwy sposób zmiany nazw zmiennych za pomocą funkcji z dplyr, która jest tak łatwa w użyciu, jak w przypadku Plyr rename
?
118
rename(TheDataFrame,OldVarName=NewVarName)
ale dostajęError: Unknown variables: NewVarName.
i nie rozumiem dlaczego.dplyr::rename(iris, petal_length = Petal.Length)
.iris <- dplyr::rename(iris, petal_length = Petal.Length)
rename () nie obsługuje nazw zmiennych ze spacjami, na przykładdplyr::rename(iris, petal_length = "petal length")
powoduje błąd.setNames()
jeśli zastępujesz hurtowo nazwy kolumn:df %>% mutate(foo = 1 +2) %>% setNames(c("blah", "blu", "bar"))
Następna wersja dplyr będzie obsługiwać ulepszoną wersję select, która obejmuje również zmianę nazwy:
źródło
changes
jest eksportowane (lub powinno być)plyr
funkcja zmiany nazwy używa,"old"="new"
podczas gdydplyr
używa,new=old
która zachowuje spójność z resztą funkcji dplyr. Osobiście nie uważam tego za problem - szybko przyzwyczajasz się do nowych rzeczy, zwłaszcza gdy oznacza to znaczne przyspieszenie przetwarzania danych.select
. Nie jestem pewien, czy mamy coś, co mówi, wybierz wszystkie zmienne i przy okazji zmień nazwę tej kolumny.select
faktycznie się zachowuje? Głosowałbym za prostymdplyr
sposobem na zachowanie wszystkich zmiennych i po prostu zmianę nazwy jednej lub dwóch. :) Na razie będę ładowaćplyr
i używaćrename
.mtcars %>% select(matches(".*"),disp2=disp)
. Chciałbym mieć bardziej oszczędne rozwiązanie, ale to działa i zachowuje wszystkie kolumny (choć nie ich kolejność).disp
nie jest duplikowany.Rzeczywiście można użyć
plyr
„srename
funkcję jako częśćdplyr
łańcuchów. Myślę, że każda funkcja, która a) przyjmuje adata.frame
jako pierwszy argument i b) zwracadata.frame
prace do łączenia w łańcuch. Oto przykład:AKTUALIZACJA: Obecna wersja
dplyr
obsługuje zmianę nazwy bezpośrednio jako częśćselect
funkcji (patrz post Romain Francois powyżej). Ogólne stwierdzenie dotyczące używania funkcji innych niż dplyr jako częścidplyr
łańcuchów jest jednak nadal aktualne irename
jest interesującym przykładem.źródło
Nie jest wymieniony jako funkcja w dplyr (jeszcze): http://cran.rstudio.org/web/packages/dplyr/dplyr.pdf
Poniższa funkcja działa (prawie) tak samo, jeśli nie chcesz ładować zarówno plyr, jak i dplyr
Edycja: komentarz Romaina daje następujące wyniki (zauważ, że funkcja zmiany wymaga dplyr .1.1)
źródło
mtcars
Itp., Ale dość dramatyczne, jeśli masz do czynienia z istotnymi danymi. czekdplyr:::changes(mtcars, dat)
Chociaż
dplyr::select_all()
nazwa nie jest dokładnie zmieniana, może służyć do ponownego formatowania nazw kolumn. Ten przykład zastępuje spacje i kropki podkreśleniem i konwertuje wszystko na małe litery:źródło
Próbowałem użyć dplyr :: rename i otrzymuję błąd:
Zamiast tego użyłem podstawowej funkcji R, która okazała się dość prosta i skuteczna:
źródło