为每个子组分配基于分位数的标签

时间:2017-09-02 18:01:35

标签: r plyr

我的data.frame看起来像这样:

Region  Store Sales
A        1    ***
A        2    ***
B        1    ***
B        2    ****

我想根据销售业绩创建商店标签。也就是说,如果商店销售额高于75%,则分配器分配“高”,否则为低。 使用代码

应用ddply
R3 <- ddply(dat, .(REGION), function(x) quantile(x$Sales, na.rm = TRUE))

返回包含区域的所有分位数的数据帧。 我可以使用该框架与原始框架连接,并为每个集群执行if-else。我相信这不是一种有效的方式。有更好的方法吗?

1 个答案:

答案 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)