根据分位数为每个子组分配标签
Assigning Label based on quantile for every sub group
我的 data.frame 看起来像这样:
Region Store Sales
A 1 ***
A 2 ***
B 1 ***
B 2 ****
我想根据销售业绩创建商店标签。也就是说,如果商店销售额高于 75% 分位数,则分配 "High" 否则为低。
使用代码
应用 ddply
R3 <- ddply(dat, .(REGION), function(x) quantile(x$Sales, na.rm = TRUE))
returns 包含区域所有分位数的数据框。
我可以使用该框架与原始框架连接,并为每个集群执行 if-else。我确信这不是一种有效的方法。有更好的方法吗?
这是你想要的吗?
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)
我的 data.frame 看起来像这样:
Region Store Sales
A 1 ***
A 2 ***
B 1 ***
B 2 ****
我想根据销售业绩创建商店标签。也就是说,如果商店销售额高于 75% 分位数,则分配 "High" 否则为低。 使用代码
应用 ddplyR3 <- ddply(dat, .(REGION), function(x) quantile(x$Sales, na.rm = TRUE))
returns 包含区域所有分位数的数据框。 我可以使用该框架与原始框架连接,并为每个集群执行 if-else。我确信这不是一种有效的方法。有更好的方法吗?
这是你想要的吗?
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)