R如果值位于向量中的范围之间,则分配多个类(简单方式)

R如果值位于向量中的范围之间,则分配多个类(简单方式),r,dplyr,magrittr,R,Dplyr,Magrittr,如果值在某个范围内,我将尝试为其分配一个类。以下是一个例子: library(dplyr) library(data.table) library(magrittr) fieldArea = tibble(TotalFieldArea= runif(100000) * 1000) fieldArea %<>% mutate(Segment2019 = if_else(TotalFieldArea < 99, "Very_Small",

如果值在某个范围内,我将尝试为其分配一个类。以下是一个例子:

library(dplyr)
library(data.table)
library(magrittr)

fieldArea = tibble(TotalFieldArea= runif(100000) * 1000)

fieldArea %<>%
  mutate(Segment2019 = if_else(TotalFieldArea < 99, "Very_Small",
                       if_else(TotalFieldArea < 199, "Small",
                       if_else(TotalFieldArea < 499, "Medium",
                       if_else(TotalFieldArea < 999, "Large", "Key_Account")))))

库(dplyr)
库(数据表)
图书馆(magrittr)
fieldArea=TIBLE(TotalFieldArea=runif(100000)*1000)
现场面积%%
突变(Segment2019=if_else(TotalFieldArea<99,“非常小”),
如果是(TotalFieldArea<199,“小”,
如果是(TotalFieldArea<499,“中等”,
if_else(TotalFieldArea<999,“大”、“关键账户”()()))
我只是想知道是否有一种方法可以简化dplyr中的代码,比如:

# Designing rules
class_rule = c(0, 99, 199, 499, 999)
classes    = c("Very_Small", "Small", "Medium", "Large", "Key_Account")

# Applying rules - (Imaginary Code)
fieldArea %<>% mutate(Segment2019 = classes %in% TotalFieldArea < class_rule)
#设计规则
类规则=c(0,99,199,499,999)
类别=c(“非常小”、“小”、“中”、“大”、“关键账户”)
#应用规则-(虚拟代码)
fieldArea%%mutate(Segment2019=类在%TotalFieldArea

如果类在范围内,则应分配它们。

我们可以使用
cut

library(dplyr)
fieldArea %>%
       mutate(Segment2019 = cut(TotalFieldArea, breaks = c(class_rule, Inf), 
      labels = classes))

我们可以使用
cut

library(dplyr)
fieldArea %>%
       mutate(Segment2019 = cut(TotalFieldArea, breaks = c(class_rule, Inf), 
      labels = classes))

可能会添加Inf上限,否则在当前op答案上会失败,也可能会将df定义为
fieldArea=tibble(TotalFiedlArea=runif(100000)*1000)
哦,对不起,我用TotalFiedlArea打了一个大错,正在更改它!正如@Bruno提到的,tibble被识别了,但我得到了一个错误:缺少x参数“breaks”,没有default@BatuhanKavlak抱歉,输入错误,它应该是
中断
而不是
级别
可能会添加Inf上限,否则在当前op答案上这将失败,也可能会将df定义为
fieldArea=tibble(TotalFiedlArea=runif(100000)*1000)
哦,对不起,我用TotalFiedlArea打了一个大的错别字,修改了它!正如@Bruno提到的,tibble被识别了,但我得到了这个错误:缺少x参数“breaks”,没有default@BatuhanKavlak抱歉,输入错误,应该是
中断
而不是
级别