Eu gosto da função de renomeação de plyr rename
. Recentemente comecei a usar o dplyr e gostaria de saber se existe uma maneira fácil de renomear variáveis usando uma função de dplyr, que seja tão fácil de usar quanto a de plyr rename
?
118
rename(TheDataFrame,OldVarName=NewVarName)
mas entendoError: Unknown variables: NewVarName.
e não entendo o porquê.dplyr::rename(iris, petal_length = Petal.Length)
.iris <- dplyr::rename(iris, petal_length = Petal.Length)
e rename () não trata nomes de variáveis com espaços, por exemplo,dplyr::rename(iris, petal_length = "petal length")
produz um erro.setNames()
se estiver substituindo os nomes das colunas no atacado:df %>% mutate(foo = 1 +2) %>% setNames(c("blah", "blu", "bar"))
A próxima versão do dplyr oferecerá suporte a uma versão aprimorada do select que também incorpora a renomeação:
fonte
changes
é exportado (ou deveria ser)plyr
a função de renomear de usa"old"="new"
enquantodplyr
usa onew=old
que a mantém consistente com o resto das funções dplyr. Pessoalmente, não penso nisso como um problema - você se acostuma com coisas novas rapidamente, especialmente quando isso significa uma aceleração significativa no processamento de dados.select
. Não tenho certeza se temos algo que diz: selecione todas as variáveis e, a propósito, renomeie esta coluna.select
realmente se comporta? Eu votaria por umadplyr
maneira fácil de manter todas as variáveis e apenas renomear uma ou duas. :) Por enquanto, continuarei carregandoplyr
e usandorename
.mtcars %>% select(matches(".*"),disp2=disp)
. Eu adoraria uma solução mais parcimoniosa, mas isso funciona e preserva todas as colunas (embora não sua ordem).disp
não é duplicado.Você pode realmente usar
plyr
arename
função de como parte dedplyr
cadeias. Acho que toda função que a) recebe adata.frame
como primeiro argumento eb) retorna adata.frame
funciona para encadeamento. Aqui está um exemplo:ATUALIZAÇÃO: A versão atual do
dplyr
suporta renomeação diretamente como parte daselect
função (veja a postagem de Romain Francois acima). A declaração geral sobre o uso de funções não-dplyr como parte dedplyr
chains ainda é válida erename
é um exemplo interessante.fonte
Não está listado como uma função no dplyr (ainda): http://cran.rstudio.org/web/packages/dplyr/dplyr.pdf
A função abaixo funciona (quase) da mesma forma se você não quiser carregar o plyr e o dplyr
Editar: O comentário de Romain produz o seguinte (observe que a função de mudanças requer dplyr .1.1)
fonte
mtcars
etc ... mas bastante dramático se você lidar com dados substanciais. verificardplyr:::changes(mtcars, dat)
Embora não seja exatamente renomear,
dplyr::select_all()
pode ser usado para reformatar os nomes das colunas. Este exemplo substitui espaços e pontos por um sublinhado e converte tudo para minúsculas:fonte
Tentei usar dplyr :: rename e recebo um erro:
Em vez disso, usei a função R de base, que se revelou bastante simples e eficaz:
fonte