如何使用dplyr的summarize函数统计总条目数及特定组条目占比
如何使用dplyr的summarize函数统计总条目数及特定组条目占比
嗨,这问题我熟!你想用dplyr处理订单数据,统计每个客户的总订单量,还有特定产品(比如这里的apple)的订单占比,其实用group_by()配合summarize()就能完美解决,咱们直接上代码和解释:
首先先确认你的原始数据(我把你给的tribble代码整理好了):
library(dplyr) library(tibble) ord <- tribble( ~name, ~product, "Alice", "apple", "Alice", "banana", "Alice", "cherry", "Alice", "apple", "Bob", "apple", "Bob", "banana", "Alice", "apple" )
接下来就是核心的处理步骤:
- 先用
group_by(name)按客户名称分组,这样后续的统计都是基于每个客户的订单来计算的 - 然后在
summarize()里定义两个统计项:total_orders:用n()函数直接获取每组的行数,也就是该客户的总订单数apple_fraction:用sum(product == "apple")统计该客户的苹果订单数量,再除以总订单数得到占比
完整代码如下:
result <- ord %>% group_by(name) %>% summarize( total_orders = n(), apple_fraction = sum(product == "apple") / total_orders ) # 查看结果 result
运行之后就能得到你想要的输出:
# A tibble: 2 × 3 name total_orders apple_fraction <chr> <int> <dbl> 1 Alice 5 0.6 2 Bob 2 0.5
要是你以后想换其他产品的占比,只需要把product == "apple"里的apple换成对应的产品名称就行,非常灵活!
备注:内容来源于stack exchange,提问作者mac
相关产品推荐
相关产品推荐

