我经常处理凌乱的调查数据,这需要大量清理才能完成任何统计数据。我曾经在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),并且知道受试者可以自由编写自己喜欢的任何东西,那么最好的方法是什么?
new_var[by.hand] <- c(2, 1, ...)
与by.hand
被TRUE
用于由手工完成的情况下?