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抱歉,输入错误,应该是中断
而不是级别