在 R 中创建新的分组条件变量

Create new, grouped conditional variable in R

我正在尝试创建一个新变量,该变量已分组并具有多个条件。 例如。使用鸢尾花数据集:

我想添加一个新列,按物种分组并包含有关大小的信息。结果预计是一个因子变量,级别为“小”、“中”和“大”。

这是一个例子:

data(iris)
data %>% 
  dplyr::group_by(Species) %>% 
  dplyr::mutate(Size =
                  if_else(Sepal.Length <= 5.1 ~ "small",
                          Sepal.Length <= 5.8 & > 5.1 ~ "medium",
                          Sepal.Length > 5.8 ~ "large")
                ) 

没用。显然有

an unmatched closed bracket ")"

现在,我知道其他解决方案,例如使用 Base R 的 ifelse 函数,但我试图找到一种优雅的方式来使用 tidyverse 风格的代码来表达我自己。谁能帮忙? 我会很高兴使用 tidyverse 代码的任何解决方案。不管是什么功能。

您的语法错误很少。尝试:

library(dplyr)

iris %>% 
  mutate(Size = case_when(Sepal.Length <= 5.1 ~ "small",
                          Sepal.Length <= 5.8 & Sepal.Length > 5.1 ~ "medium",
                          Sepal.Length > 5.8 ~ "large"))

我知道这只是一个示例,但如果您想将数据划分到不同范围的桶中,您还可以考虑 ?cut?findInterval

iris$Size <- cut(iris$Sepal.Length, c(-Inf, 5.1, 5.8, Inf),
                c('small', 'medium', 'large'))