5.1 一个数据处理难题
要讨论数值和字符处理函数,让我们首先考虑一个数据处理问题。一组学生参加了数学、科学和英语考试。为了给所有学生确定一个单一的成绩衡量指标,需要将这些科目的成绩组合起来。另外,你还想将前20%的学生评定为A,接下来20%的学生评定为B,依次类推。最后,你希望按字母顺序对学生排序。数据如表5-1所示。
观察此数据集,马上可以发现一些明显的障碍。首先,三科考试的成绩是无法比较的。由于它们的均值和标准差相去甚远,所以对它们求平均值是没有意义的。你在组合这些考试成绩之前,必须将其变换为可比较的单元。其次,为了评定等级,你需要一种方法来确定某个学生在前述得分上百分比排名。再次,表示姓名的字段只有一个,这让排序任务复杂化了。为了正确地将其排序,需要将姓和名拆开。 表5-1 学生成绩数据
学生姓名 | 数 学 | 科 学 | 英 语 |
---|---|---|---|
John Davis | 502 | 95 | 25 |
Angela Williams | 600 | 99 | 22 |
Bullwinkle Moose | 412 | 80 | 18 |
David Jones | 358 | 82 | 15 |
Janice Markhammer | 495 | 75 | 20 |
Cheryl Cushing | 512 | 85 | 28 |
Reuven Ytzrhak | 410 | 80 | 15 |
Greg Knox | 625 | 95 | 30 |
Joel England | 573 | 89 | 27 |
Mary Rayburn | 522 | 86 | 18 |
以上每一个任务都可以巧妙地利用R中的数值和字符处理函数完成。在讲解完下一节中的各种函数之后,我们将考虑一套可行的解决方案,以解决这项数据处理难题。