很简单的问题。使用下面概述的第二种方法与方法1相比有什么缺点吗?或者它们实际上是相同的。(在处理变量的一些复杂条件时,我倾向于使用方法2,并且发现跟踪变量从一行到下一行更容易,但我担心这可能是糟糕的编码实践)
library(dplyr)
section <- c("MATH111", "MATH111", "ENG111")
grade <- c(78, 93, 56)
student <- c("David", "Kristina", "Mycroft")
gradebook <- data.frame(section, grade, student)
mutate(gradebook, Pass.Fail = ifelse(grade > 60, "Pass", "Fail"))
#approach 1
mutate(gradebook, letter = ifelse(grade %in% 60:69, "D",
ifelse(grade %in% 70:79, "C",
ifelse(grade %in% 80:89, "B",
ifelse(grade %in% 90:99, "A", "F")))))
#approach 2
gradebook$letter<-NA
gradebook <- gradebook %>%
mutate(letter=ifelse(grade < 60, "F",letter)) %>%
mutate(letter=ifelse(grade >60 & grade< 69, "D",letter)) %>%
mutate(letter=ifelse(grade >70 & grade< 79, "C",letter)) %>%
mutate(letter=ifelse(grade >80 & grade< 89, "B",letter)) %>%
mutate(letter=ifelse(grade >90 & grade< 99, "A",letter))
gradebook发布于 2021-12-09 04:26:38
似乎有一些错误,但如果您尝试使用dplyr::mutate,在本例中,dplyr::case_when将有所帮助。
gradebook %>%
mutate(letter = case_when(
grade < 60 ~ "F",
grade < 70 ~ "D",
grade < 80 ~ "C",
grade < 90 ~ "B",
grade < 100 ~ "A",
T ~ NA_character_
))
section grade student letter
1 MATH111 78 David C
2 MATH111 93 Kristina A
3 ENG111 56 Mycroft Fhttps://stackoverflow.com/questions/70284686
复制相似问题