Мне нравится функция переименования в plyr rename
. Я недавно начал использовать dplyr, и мне было интересно, есть ли простой способ переименовать переменные с помощью функции из dplyr, которая так же проста в использовании, как и plyr rename
?
118
rename(TheDataFrame,OldVarName=NewVarName)
но получаюError: Unknown variables: NewVarName.
и не понимаю почему.dplyr::rename(iris, petal_length = Petal.Length)
.iris <- dplyr::rename(iris, petal_length = Petal.Length)
а rename () не обрабатывает имена переменных с пробелами, например,dplyr::rename(iris, petal_length = "petal length")
выдает ошибку.setNames()
если заменяете имена столбцов оптом:df %>% mutate(foo = 1 +2) %>% setNames(c("blah", "blu", "bar"))
Следующая версия dplyr будет поддерживать улучшенную версию select, которая также включает переименование:
источник
changes
экспортирован (или должен быть)plyr
функция переименования использует"old"="new"
тогда, когдаdplyr
использует,new=old
что обеспечивает согласованность с остальными функциями dplyr. Лично я не считаю это проблемой - вы быстро привыкаете к новому, особенно когда это означает значительное ускорение обработки данных.select
. Не уверен, что у нас есть что-то, что говорит выбрать все переменные и, кстати, переименовать этот столбец.select
реальное поведение? Я бы проголосовал за простойdplyr
способ сохранить все переменные и просто переименовать одну или две. :) А пока продолжу загружатьplyr
и использоватьrename
.mtcars %>% select(matches(".*"),disp2=disp)
. Мне бы хотелось более экономного решения, но оно работает и сохраняет все столбцы (хотя и не их порядок).disp
не дублируется.Вы можете использовать
plyr
«srename
функцию как частьdplyr
цепей. Я думаю, что каждая функция, которая а) принимает вdata.frame
качестве первого аргумента и б) возвращает,data.frame
работает для цепочки. Вот пример:ОБНОВЛЕНИЕ: текущая версия
dplyr
поддерживает переименование напрямую как частьselect
функции (см. Сообщение Ромена Франсуа выше). Общее утверждение об использовании функций, отличных от dplyr, как частиdplyr
цепочек, по-прежнему актуально иrename
является интересным примером.источник
Он не указан как функция в dplyr (пока): http://cran.rstudio.org/web/packages/dplyr/dplyr.pdf
Функция ниже работает (почти) одинаково, если вы не хотите загружать и plyr, и dplyr.
Изменить: комментарий Ромена дает следующее (обратите внимание, что для функции изменений требуется dplyr .1.1)
источник
mtcars
т.д ... но весьма драматичными , если вы имеете дело с существенными данными. checkdplyr:::changes(mtcars, dat)
Хотя это не совсем переименование, но
dplyr::select_all()
может использоваться для переформатирования имен столбцов. В этом примере пробелы и точки заменяются подчеркиванием и все переводятся в нижний регистр:источник
Я попытался использовать dplyr :: rename и получил сообщение об ошибке:
Вместо этого я использовал базовую функцию R, которая оказалась довольно простой и эффективной:
источник