Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用if-else语句添加列_R_Dataframe_If Statement_Dplyr - Fatal编程技术网

R 使用if-else语句添加列

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

我正在尝试将数字分成几个类别,以创建一个新列。基本上,尝试根据分数创建字母等级(“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”、“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
并对其进行矢量化。