【发布时间】:2014-12-04 08:47:36
【问题描述】:
我是 R 新手,正在尝试根据数据框中的其他 2 列创建一个新列。
UserID Age GradeLevel
001 10 5
002 10 3
003 8 4
004 10 7
005 8 3
006 8 NA
007 10 6
008 7 NA
009 7 6
我必须创建一个新列“成绩”。我需要先看年龄,然后看 GradeLevel。如果分配的 GradeLevel 正确,那么我将相同的 GradeLevel 复制到新列。如果分配的年级错误(如 obs 2、4、6、8、9),那么我必须根据用户的年龄将用户分配到更高的年级。
例如,一个 10 岁的孩子可以在 5 或 6 年级,但如果 GradeLevel 不是 5 或 6,则分配到 6 年级(2 年级的更高年级)。
所以想要的输出应该是这样的:
UserID Age GradeLevel Grade
001 10 5 5
002 10 3 6
003 8 4 4
004 10 7 6
005 8 3 3
006 8 NA 4
007 10 6 6
008 7 NA 3
009 7 6 3
GradeLevel 是数据中的一个因素,但如果需要,我们可以将其转换为字符。在数据中,我拥有从 K 到 12 的所有 GradeLevels。 我正在尝试使用 ifelse 语句,但无法使其正常工作。
test$Grade.f = ifelse(test$age==10 & (test$GradeLevel %in% c(5,6)), test$GradeLevel, "6")
ifelse(test$age==9 & (test$GradeLevel %in% c(4,5)), test$GradeLevel, "5").....
我需要一些帮助来解决这个问题。
【问题讨论】:
-
你没有提到任何分配等级的规则。也许您认为您的本地系统是国际系统。
-
根据这篇维基百科文章分配年级。 en.wikipedia.org/wiki/Education_in_the_United_States
标签: r