Lebih
Membuat dummy variabel-
Saya memiliki masalah yang menghasilkan berikut dummy variabel dalam R:
I'm menganalisis tahunan data deret waktu (time periode 1948-2009). Saya punya dua pertanyaan:
-
Bagaimana saya menghasilkan variabel dummy untuk pengamatan #10, yaitu untuk tahun 1957 (nilai = 1 pada tahun 1957 dan nol sebaliknya)?
-
Bagaimana saya menghasilkan variabel dummy adalah nol sebelum tahun 1957 dan mengambil nilai 1 dari tahun 1957 dan seterusnya untuk tahun 2009?
67
16
Pilihan lain yang dapat bekerja lebih baik jika anda memiliki banyak variabel adalah
faktor
danmodel.matrix
.Ini akan mencakup mencegat kolom (semua orang) dan satu kolom untuk setiap tahun dalam mengatur data anda kecuali satu, yang akan menjadi "default" atau mencegat nilai.
Anda dapat mengubah bagaimana "default" yang dipilih oleh bermain-main dengan
kontras.arg
dimodel.matrix
.Juga, jika anda ingin menghilangkan mencegat, anda hanya bisa drop kolom pertama atau tambahkan
+0
untuk akhir formula.Semoga ini berguna.
Cara paling sederhana untuk menghasilkan dummy variabel adalah sesuatu seperti berikut:
Secara lebih umum, anda dapat menggunakan
ifelse
untuk memilih di antara dua nilai, tergantung pada kondisi. Jadi jika bukan 0-1 variabel dummy, untuk beberapa alasan anda ingin gunakan, mengatakan, 4 dan 7, anda bisa menggunakanifelse(tahun == 1957, 4, 7)
.Menggunakan dummies::dummy():
Paket
mlr
termasukcreateDummyFeatures
untuk tujuan ini:Lain jawaban di sini menawarkan rute langsung untuk menyelesaikan tugas ini—salah satu yang banyak model (misalnya
lm
) akan lakukan untuk anda secara internal pula. Meskipun demikian, di sini adalah cara untuk membuat dummy variabel dengan Max Kuhn's populersisipan
danresep
paket. Sementara agak lebih verbose, mereka berdua skala mudah untuk situasi yang lebih rumit, dan cocok rapi ke masing-masing kerangka.karet::dummyVars
Dengan
karet
, fungsi yang relevan adalahdummyVars
, yang memilikimemprediksi
metode untuk menerapkannya pada data frame:resep::step_dummy
Dengan
resep
, fungsi yang relevan adalahstep_dummy
:Tergantung pada konteks, ekstrak data dengan
persiapan
danpanggang
ataujus
:Apa yang biasanya saya lakukan untuk bekerja dengan jenis variabel dummy adalah:
(1) bagaimana cara menghasilkan variabel dummy untuk pengamatan #10, yaitu untuk tahun 1957 (nilai = 1 pada tahun 1957 dan nol sebaliknya)
Untuk usecase seperti yang disajikan dalam pertanyaan, anda juga dapat memperbanyak logis dengan kondisi
1
(atau mungkin bahkan lebih baik, dengan1L
):Saya membaca ini di kaggle forum:
Jika anda ingin mendapatkan K variabel dummy, bukan K-1, coba:
Terbaik,
≪a href="https://stat.ethz.ch/R-manual/R-devel/library/base/html/ifelse.html">`ifelse` fungsi adalah yang terbaik untuk logika sederhana seperti ini.
Juga, jika anda ingin mengembalikan data karakter maka anda dapat melakukannya.
Variabel kategori dengan bersarang...
Ini adalah yang paling mudah pilihan.
Cara lain adalah dengan menggunakan
mtabulate
dariqdapTools
paket, yaituSaya menggunakan fungsi tersebut (untuk data.tabel):
Penggunaan:
Mengkonversi data ke data.meja dan penggunaan yang ditetapkan oleh referensi dan baris penyaringan
Kita juga bisa menggunakan
cSplit_e
darisplitstackshape
. Menggunakan @zx8754's datacara lain yang dapat anda lakukan adalah menggunakan
Hi saya menulis ini secara umum fungsi untuk menghasilkan sebuah variabel dummy yang pada dasarnya meniru menggantikan fungsi di Stata.
Jika x adalah data frame adalah x dan saya ingin dummy variabel yang disebut
a
yang akan mengambil nilai1
ketikax$b
mengambil nilaic