Saya suka fungsi penggantian nama plyr rename
. Saya baru-baru ini mulai menggunakan dplyr, dan bertanya-tanya apakah ada cara mudah untuk mengganti nama variabel menggunakan fungsi dari dplyr, yang semudah digunakan untuk plyr rename
?
118
rename(TheDataFrame,OldVarName=NewVarName)
tapi saya mengertiError: Unknown variables: NewVarName.
dan saya tidak mengerti mengapa.dplyr::rename(iris, petal_length = Petal.Length)
.iris <- dplyr::rename(iris, petal_length = Petal.Length)
dan rename () tidak menangani nama variabel dengan spasi, misalnya,dplyr::rename(iris, petal_length = "petal length")
menghasilkan kesalahan.setNames()
jika Anda mengganti nama kolom grosir:df %>% mutate(foo = 1 +2) %>% setNames(c("blah", "blu", "bar"))
Versi dplyr berikutnya akan mendukung versi pilihan yang lebih baik yang juga mencakup penggantian nama:
sumber
changes
diekspor (atau seharusnya)plyr
fungsi rename menggunakan"old"="new"
sedangkandplyr
penggunaannew=old
yang membuatnya tetap konsisten dengan fungsi dplyr lainnya. Secara pribadi, saya tidak menganggapnya sebagai masalah - Anda terbiasa dengan hal-hal baru dengan cepat terutama jika itu berarti ada percepatan yang signifikan dalam pemrosesan data Anda.select
. Tidak yakin kami memiliki sesuatu yang mengatakan pilih semua variabel dan dengan cara mengganti nama kolom ini.select
perilaku yang sebenarnya? Saya akan memberikan suara untuk cara mudahdplyr
menyimpan semua variabel dan hanya mengganti nama satu atau dua. :) Untuk saat ini saya akan terus memuatplyr
dan menggunakanrename
.mtcars %>% select(matches(".*"),disp2=disp)
. Saya ingin solusi yang lebih pelit tetapi ini berfungsi dan mempertahankan semua kolom (meskipun bukan urutannya).disp
tidak diduplikasi.Anda benar-benar bisa menggunakan
plyr
'srename
fungsi sebagai bagian daridplyr
rantai. Saya pikir setiap fungsi yang a) mengambil adata.frame
sebagai argumen pertama dan b) mengembalikan sebuahdata.frame
karya untuk rangkaian . Berikut ini contohnya:UPDATE: Versi saat ini dari
dplyr
mendukung penggantian nama secara langsung sebagai bagian dariselect
fungsi (lihat posting Romain Francois di atas). Pernyataan umum tentang penggunaan fungsi non-dplyr sebagai bagian daridplyr
rantai masih valid danrename
merupakan contoh yang menarik.sumber
Itu tidak terdaftar sebagai fungsi di dplyr (belum): http://cran.rstudio.org/web/packages/dplyr/dplyr.pdf
Fungsi di bawah ini bekerja (hampir) sama jika Anda tidak ingin memuat plyr dan dplyr
Sunting: Komentar oleh Romain menghasilkan yang berikut (perhatikan bahwa fungsi perubahan membutuhkan dplyr .1.1)
sumber
mtcars
dll ... tetapi cukup dramatis jika Anda berurusan dengan data yang substansial. periksadplyr:::changes(mtcars, dat)
Meskipun tidak persis mengganti nama,
dplyr::select_all()
dapat digunakan untuk memformat ulang nama kolom. Contoh ini menggantikan spasi dan titik dengan garis bawah dan mengonversi semuanya menjadi huruf kecil:sumber
Saya mencoba menggunakan dplyr :: rename dan saya mendapatkan kesalahan:
Saya malah menggunakan fungsi dasar R yang ternyata cukup sederhana dan efektif:
sumber