Je traite souvent des données d'enquête en désordre qui nécessitent beaucoup de nettoyage avant de pouvoir effectuer des statistiques. J'avais l'habitude de le faire "manuellement" dans Excel, parfois en utilisant des formules Excel, et parfois en vérifiant les entrées une par une. J'ai commencé à faire de plus en plus de ces tâches en écrivant des scripts pour les faire dans R, ce qui a été très bénéfique (les avantages incluent avoir un enregistrement de ce qui a été fait, moins de risques d'erreurs et pouvoir réutiliser du code si l'ensemble de données est mis à jour).
Mais il existe encore certains types de données que j'ai du mal à gérer efficacement. Par exemple:
> 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 censé être le nombre moyen d'heures par jour consacrées à une certaine activité, mais ce que nous avons est exactement ce que le sujet a écrit. Supposons que je prenne certaines décisions sur ce qu'il faut faire avec des réponses ambiguës, et que je veux la variable rangée hours.per.day2
comme suit.
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
En supposant que le nombre de cas est assez important (disons 1000) et sachant que les sujets étaient libres d'écrire ce qu'ils voulaient, quelle est la meilleure façon d'aborder cela?
new_var[by.hand] <- c(2, 1, ...)
avecby.hand
êtreTRUE
pour les cas qui sont faites à la main?