我的data.frame看起来像这样:
Region Store Sales
A 1 ***
A 2 ***
B 1 ***
B 2 ****
我想根据销售业绩创建商店标签。也就是说,如果商店销售额高于75%,则分配器分配“高”,否则为低。 使用代码
应用ddplyR3 <- ddply(dat, .(REGION), function(x) quantile(x$Sales, na.rm = TRUE))
返回包含区域的所有分位数的数据帧。 我可以使用该框架与原始框架连接,并为每个集群执行if-else。我相信这不是一种有效的方式。有更好的方法吗?
答案 0 :(得分:1)
df %>% group_by(Region) %>%
mutate(Performance = ifelse(Sales > quantile(Sales, 0.75), 'High', 'Low'))
#> # A tibble: 4 x 4
#> # Groups: Region [2]
#> Region Store Sales Performance
#> <chr> <int> <int> <chr>
#> 1 A 1 100 High
#> 2 A 2 10 Low
#> 3 B 1 90 High
#> 4 B 2 10 Low
数据输入
df = read.table(text = 'Region Store Sales
A 1 100
A 2 10
B 1 90
B 2 10', header = T, stringsAsFactors = F)