为什么`cut`反对我的标签?

时间:2016-08-13 23:01:25

标签: r

我正在尝试根据它们所处的范围来标记值,例如,对分配分配的方式。因此,如果我有一个平均测验分数的数据框,以及一个数字值的数据框,我用它作为下限来为这些方法分配成绩:

grades <- read.table(text="Student Mean
Adam 94
Amanda 85.5
James 81
Noah 72.8333333333333
Zach 57.5", header = TRUE)

letters <- read.table(text = "Letter  Cutoff
A 90
B 80
C 70
D 60
F 0", header = TRUE)

我以为我可以使用cut为每个人分配成绩。

我可以使用cut来解决这些问题,但我遇到了两个令人恼火的问题:

首先,这些截止值是最小值,而不是最大值,我没有看到改变它的方法。第二,cut不希望使用字母等级作为标签。如果我这样做:

cut(grades$Mean, 
    breaks = letters$Cutoff,   
    labels = letters$Letter,
    right = FALSE)

我收到错误lengths of 'breaks' and 'labels' differ。是否可以使用cut以这种方式为值分配标签?

1 个答案:

答案 0 :(得分:5)

breaks向量必须比labels向量长一个元素:每个类别都需要一个下限和上限。只需将100(上限)粘贴到breaks向量的末尾(如果你有任何正好100的分数,则可能需要为100.5 ......)正如上面的评论所指出的,你应该休息一下升序......

cut(grades$Mean, 
    breaks = c(rev(letters$Cutoff),100),
    labels = rev(letters$Letter),
    right = FALSE)
## [1] A B B C F
## Levels: F D C B A