根据其他三列中的值分配列值

时间:2019-08-08 13:06:01

标签: r dataframe if-statement conditional-statements

我上周开始学习R,并且有一个针对K-12学生的考试成绩数据集。栏上列出了年级(k-12),学科(数学,阅读,科学)和考试成绩。我需要创建一个将考试成绩与熟练水平联系起来的列。因此,如果学生的得分在0-147之间,则他们被分配为“有限”水平,148-158为“标准”,依此类推。

数据集如下:

enter image description here

以此类推。我希望它看起来像这样:

enter image description here

问题在于,不同熟练程度的切入点因年级和科目而异。我试图避免在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))

请帮助

1 个答案:

答案 0 :(得分:1)

我们可以使用cut

library(dplyr)
test_score %>%
      mutate(proficiency_level = cut(score, breaks = K_math, labels = levels))