【发布时间】:2015-03-10 06:26:35
【问题描述】:
我确定以前有人问过这个问题,但我不知道要搜索什么,所以我提前道歉。
假设我有以下数据框:
grades <- data.frame(a = 1:40, b = sample(45:100, 40))
使用 deplyr,我想创建一个新变量来指示学生获得的成绩,基于以下标准:90-100 = 优秀,80-90 = 非常好,等等。
我认为我可以使用以下方法通过在 mutate() 中嵌套 ifelse() 来获得该结果:
grades %>%
mutate(ifelse(b >= 90, "excellent"),
ifelse(b >= 80 & b < 90, "very_good"),
ifelse(b >= 70 & b < 80, "fair"),
ifelse(b >= 60 & b < 70, "poor", "fail"))
这不起作用,因为我收到错误消息“缺少参数,没有默认值”)。我认为“否”最终会是“失败”,但显然我的语法错误。
如果我先单独过滤原始数据,然后调用ifelse,可以得到这个,如下:
a <- grades %>%
filter( b >= 90) %>%
mutate(final = ifelse(b >= 90, "excellent"))
和 rbind a、b、c 等。显然,这不是我想要的,但我想了解 ifelse() 的语法。我猜后者是可行的,因为没有任何值不符合标准,但是当有多个 ifelse 时,我仍然不知道如何让它工作。
【问题讨论】:
-
你可以使用
cut函数来做到这一点
标签: r if-statement dplyr