我上周开始学习R,并且有一个针对K-12学生的考试成绩数据集。栏上列出了年级(k-12),学科(数学,阅读,科学)和考试成绩。我需要创建一个将考试成绩与熟练水平联系起来的列。因此,如果学生的得分在0-147之间,则他们被分配为“有限”水平,148-158为“标准”,依此类推。
数据集如下:
以此类推。我希望它看起来像这样:
问题在于,不同熟练程度的切入点因年级和科目而异。我试图避免在R中进行巨大的ifelse循环。
例如,幼儿园数学的141测试成绩将是一个有限的熟练水平,但是阅读方面的相同得分将是“标准”水平。四年级数学分数141可能是“熟练”
我尝试像这样为每个学科和年级组合的切点分配矢量,以便可以使用findInterval函数
K_math <- c(0, 147, 151, 158, 167, 350)
K_reading <- c(0, 135, 147, 159, 169, 350)
levels <- c("Limited", "Standard", "Proficient", "Accelerated", "Advanced")
然后
mutate(test_scores$_df$proficiency_level <- case_when(Grade == "K" & Discipline == "Mathematics" & findInterval(test_scores_df$RawTestScore, K_math, left.open = TRUE) ~ levels))
请帮助
答案 0 :(得分:1)
我们可以使用cut
library(dplyr)
test_score %>%
mutate(proficiency_level = cut(score, breaks = K_math, labels = levels))