亚组中的总百分比

时间:2017-04-11 11:03:46

标签: r dplyr

我有一个像:

Country  is_sale count
AU       1       10
AU       0       30
SE       1       5
SE       0       4 

我希望得到的销售百分比(is_sale = 1)超过每个国家/地区的总数:

国家/地区 AU
SE

输入将是:

country  ratio
AU       0.23
SE       0.55

如何使用dplyr实现最佳效果?

1 个答案:

答案 0 :(得分:0)

我会将您的二进制标志转换为布尔值,因为它使逻辑评估更简单一些。然后使用dplyr,您可以按Country进行分组,并在汇总函数的两个步骤中计算分子和分母。

注意在汇总步骤的第二行引用ratio的能力;这是使dplyr非常简洁的事情之一。

library(dplyr)
Country = c('AU','AU','SE','SE')
is_sale = c(1,0,1,0) %>% as.logical
count = c(10,30,5,4)

df = data.frame(Country, is_sale, count)
df %>%
  group_by(Country) %>%
  summarize(
    ratio = sum(ifelse(is_sale, count, 0)),
    ratio = ratio / sum(count)
  )