我经常处理凌乱的调查数据,在进行任何统计之前需要进行大量清理。我曾经在 Excel 中“手动”执行此操作,有时使用 Excel 公式,有时会逐个检查条目。我开始通过编写脚本在 R 中执行这些任务来完成越来越多的任务,这非常有益(好处包括记录所做的事情、减少出错的机会以及能够在数据集为更新)。
但是仍然有一些类型的数据我无法有效地处理。例如:
> 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
是指每天花在某项活动上的平均小时数,但我们所拥有的正是该主题所写的。假设我对如何处理模棱两可的响应做出了一些决定,并且我想要整理后的变量hours.per.day2
如下。
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
假设案例的数量很大(比如 1000 个)并且知道受试者可以自由地写任何他们喜欢的东西,那么解决这个问题的最佳方法是什么?