R 使用if-else语句添加列
我正在尝试将数字分成几个类别,以创建一个新列。基本上,尝试根据分数创建字母等级(“a”、“B”、“C”、“D”、“F”) 我在下面的代码中复制了一个类似的数据帧R 使用if-else语句添加列,r,dataframe,if-statement,dplyr,R,Dataframe,If Statement,Dplyr,我正在尝试将数字分成几个类别,以创建一个新列。基本上,尝试根据分数创建字母等级(“a”、“B”、“C”、“D”、“F”) 我在下面的代码中复制了一个类似的数据帧 df <- tibble(score = rnorm(20:100, n = 150)) 结果是,所有分数都被指定为“F”怎么样 cut(df$score,breaks=c(0,6:10)*10,labels=rev(LETTERS[c(1:4,6)])) ?rev(字母[c(1:4,6)]可能太聪明了,不能在c(“F”、“D
df <- tibble(score = rnorm(20:100, n = 150))
结果是,所有分数都被指定为“F”怎么样
cut(df$score,breaks=c(0,6:10)*10,labels=rev(LETTERS[c(1:4,6)]))
?rev(字母[c(1:4,6)]
可能太聪明了,不能在c(“F”、“D”、“c”、“B”、“A”)
上保存那么多字符。怎么样
cut(df$score,breaks=c(0,6:10)*10,labels=rev(LETTERS[c(1:4,6)]))
?
rev(字母[c(1:4,6)]
可能太聪明了,不能在c(“F”、“D”、“c”、“B”、“A”)
上保存那么多字符。您不能使用ifelse,它只适用于二进制条件。使用如下所示的剪切
df$Grade = cut(df$score,
breaks=c(0,60,70,80,90,100),
label=c("F","D","C","B","A"),
include.lowest =TRUE)
不能使用ifelse,它只适用于二进制条件。使用如下所示的剪切
df$Grade = cut(df$score,
breaks=c(0,60,70,80,90,100),
label=c("F","D","C","B","A"),
include.lowest =TRUE)
正如注释中所建议的,在以下情况下,您可以使用
案例_
:
df_with_grade <- df %>%
mutate(Grade = case_when(score >= 90 ~ "A",
score >= 80 ~ "B",
score >= 70 ~ "C",
score >= 60 ~ "D",
TRUE ~ "F"))
df_,等级为%
当(分数>=90~“A”,
得分>=80~“B”,
得分>=70~“C”,
得分>=60~“D”,
真~“F”))
如评论中所建议,您可以在以下情况下使用案例
:
df_with_grade <- df %>%
mutate(Grade = case_when(score >= 90 ~ "A",
score >= 80 ~ "B",
score >= 70 ~ "C",
score >= 60 ~ "D",
TRUE ~ "F"))
df_,等级为%
当(分数>=90~“A”,
得分>=80~“B”,
得分>=70~“C”,
得分>=60~“D”,
真~“F”))
只是为了说明您可以使用ifelse
df_,等级为%
变异(等级=
如果得分>=90,“A”,
如果得分>=80,“B”,
如果得分大于等于70,“C”,
如果得分大于等于60,“D”,
"F))
)
只是为了说明您可以使用ifelse
df_,等级为%
变异(等级=
如果得分>=90,“A”,
如果得分>=80,“B”,
如果得分大于等于70,“C”,
如果得分大于等于60,“D”,
"F))
)
如果其中一个或多个答案解决了您的问题,建议您选择您认为最好的答案并单击复选标记…如果其中一个或多个答案解决了您的问题,请尝试使用case\u,我们鼓励您选择您认为最好的,然后单击复选标记…建议将T
更改为TRUE
(最佳实践)建议将T
更改为TRUE
(最佳实践)您可以nest
ifelse
并对其进行矢量化。您可以nest
ifelse
并对其进行矢量化。