You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 13:24:37