A menudo me lidiar con desordenado datos de la encuesta que requiere una gran cantidad de limpieza antes de cualquier estadística que se puede hacer. Yo solía hacerlo "manualmente" en Excel, en ocasiones, el uso de fórmulas de Excel y, a veces, la comprobación de las entradas de uno-por-uno. Empecé a hacer más y más de estas tareas, la escritura de scripts para hacer en R, la cual ha sido muy beneficioso (beneficios incluyen tener un registro de lo que se hace, menos posibilidad de errores, y ser capaz de re-utilización de código si el conjunto de datos se actualiza).
Pero todavía hay algunos tipos de datos que tengo problemas para manejar de manera eficiente. Por ejemplo:
> 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
está destinado a ser el número promedio de horas por día en una determinada actividad, pero lo que tenemos es exactamente lo que el sujeto escribió. Supongamos que tomar algunas decisiones sobre qué hacer con respuestas ambiguas, y quiero que la ordenada de la variable hours.per.day2
como sigue.
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
Suponiendo que el número de casos es bastante grande (digamos 1000) y sabiendo que los sujetos eran libres para escribir cualquier cosa que le gustaba, ¿cuál es la mejor manera de abordar esto?