Tôi thường xử lý dữ liệu khảo sát lộn xộn đòi hỏi phải dọn dẹp nhiều trước khi có thể thực hiện bất kỳ số liệu thống kê nào. Tôi đã từng làm điều này "thủ công" trong Excel, đôi khi sử dụng các công thức Excel và đôi khi kiểm tra từng mục một. Tôi bắt đầu thực hiện ngày càng nhiều các nhiệm vụ này bằng cách viết các tập lệnh để thực hiện chúng trong R, điều này rất có lợi (lợi ích bao gồm ghi lại những gì đã làm, ít có lỗi và có thể sử dụng lại mã nếu tập dữ liệu là cập nhật).
Nhưng vẫn còn một số loại dữ liệu mà tôi gặp khó khăn khi xử lý hiệu quả. Ví dụ:
> 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
có nghĩa là số giờ trung bình mỗi ngày dành cho một hoạt động nhất định, nhưng những gì chúng ta có chính xác là những gì chủ đề đã viết. Giả sử tôi đưa ra một số quyết định về việc phải làm gì với các phản hồi mơ hồ và tôi muốn biến được dọn dẹp hours.per.day2
như sau.
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
Giả sử rằng số lượng các trường hợp là khá lớn (giả sử 1000) và biết rằng các đối tượng được tự do viết bất cứ điều gì họ thích, cách tốt nhất để tiếp cận điều này là gì?
new_var[by.hand] <- c(2, 1, ...)
vớiby.hand
việcTRUE
cho các trường hợp được thực hiện bằng tay?