Saya sering berurusan dengan data survei yang berantakan yang membutuhkan banyak pembersihan sebelum statistik dapat dilakukan. Saya biasa melakukan ini "secara manual" di Excel, kadang-kadang menggunakan rumus Excel, dan kadang-kadang memeriksa entri satu-per-satu. Saya mulai melakukan semakin banyak tugas ini dengan menulis skrip untuk melakukannya di R, yang sangat bermanfaat (manfaatnya termasuk memiliki catatan tentang apa yang telah dilakukan, lebih sedikit kemungkinan kesalahan, dan mampu menggunakan kembali kode jika kumpulan data adalah diperbarui).
Tetapi masih ada beberapa jenis data yang saya kesulitan penanganan secara efisien. Sebagai contoh:
> d <- data.frame(subject = c(1,2,3,4,5,6,7,8,9,10,11),
+ hours.per.day = c("1", "2 hours", "2 hr", "2hr", "3 hrs", "1-2", "15 min", "30 mins", "a few hours", "1 hr 30 min", "1 hr/week"))
> d
subject hours.per.day
1 1 1
2 2 2 hours
3 3 2 hr
4 4 2hr
5 5 3 hrs
6 6 1-2
7 7 15 min
8 8 30 mins
9 9 a few hours
10 10 1 hr 30 min
11 11 1 hr/week
hours.per.day
berarti jumlah rata-rata jam per hari yang dihabiskan untuk kegiatan tertentu, tetapi apa yang kita miliki adalah persis apa yang ditulis subjek. Misalkan saya membuat beberapa keputusan tentang apa yang harus dilakukan dengan tanggapan yang ambigu, dan saya ingin variabel yang dirapikan hours.per.day2
sebagai berikut.
subject hours.per.day hours.per.day2
1 1 1 1.0000000
2 2 2 hours 2.0000000
3 3 2 hr 2.0000000
4 4 2hr 2.0000000
5 5 3 hrs 3.0000000
6 6 1-2 1.5000000
7 7 15 min 0.2500000
8 8 30 mins 0.5000000
9 9 a few hours 3.0000000
10 10 1 hr 30 min 1.5000000
11 11 1 hr/week 0.1428571
Dengan asumsi bahwa jumlah kasus cukup besar (katakanlah 1000) dan mengetahui bahwa subjek bebas untuk menulis apa pun yang mereka suka, apa cara terbaik untuk mendekati ini?
new_var[by.hand] <- c(2, 1, ...)
denganby.hand
menjadiTRUE
untuk kasus-kasus yang dilakukan dengan tangan?