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

如何按通过结果、关联关系同时统计事件数与人数生成汇总表?

R语言按多字段分组统计事件数与人数的简洁实现

核心思路是无需拆分多次计算,通过一次分组聚合生成多维度统计结果,再通过长宽转换直接得到目标矩阵,省略手动填值的冗余步骤:

# 加载依赖包
library(tidyverse)

# 统一设置Pass因子水平,避免多次重复定义,同时保留NA分组
df <- df %>% 
  mutate(Pass = factor(Pass, levels = c("N", "Y", NA), exclude = NULL))

# 1. 按Relation+Pass分组统计事件数
event_stats <- df %>%
  group_by(Relation, Pass, .drop = FALSE) %>%
  summarise(event_count = n(), .groups = "drop")

# 2. 统计分Relation+Pass的去重人数,同时追加全量不分Relation的人数统计
people_stats <- df %>%
  group_by(Relation, Pass, .drop = FALSE) %>%
  summarise(people_count = n_distinct(ID), .groups = "drop") %>%
  bind_rows(
    df %>%
      group_by(Pass, .drop = FALSE) %>%
      summarise(people_count = n_distinct(ID), .groups = "drop") %>%
      mutate(Relation = "ALL")
  )

# 3. 合并结果转为宽表,直接输出整理好的汇总矩阵
result <- event_stats %>%
  left_join(people_stats, by = c("Relation", "Pass")) %>%
  pivot_wider(
    id_cols = Pass,
    names_from = Relation,
    values_from = c(event_count, people_count)
  )

代码优化了你原实现中的冗余操作,也修正了events_rl部分filter语句缺少闭合括号的语法问题。运行后得到的result对象已经包含所有你需要的统计维度数据,无需手动拼接填值。

内容的提问来源于stack exchange,提问作者Stataq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:30:00