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

如何计算日期列中各ID访问次数的均值与标准差

各用户访问记录数的均值、标准差计算方法

你之前用summarize没得到正确结果,核心原因是跳过了按用户id分组统计单用户访问次数的步骤,直接对原始明细行做聚合,统计口径错了。

正确实现逻辑

计算分两步:

  • 按用户id分组,统计每个id对应的日期记录条数,也就是单用户访问次数
  • 基于第一步得到的「单用户-访问次数」数据集,计算整体的均值和标准差

代码实现

方法1:dplyr 实现(最常用)

首先加载包、构造和示例一致的测试数据:

library(dplyr)

# 构造示例数据集
df <- data.frame(
  id = c(1, 1, 2, 2, 2, 3),
  date = c("2015-02-23", "2015-04-24", "2018-05-23", "2022-12-05", "2022-12-06", "2021-05-21")
)

运行统计代码:

df %>%
  # 按id分组计数,得到每个用户的访问次数,列名设为visit_count
  count(id, name = "visit_count") %>%
  # 基于单用户访问次数计算统计量
  summarise(
    visit_mean = mean(visit_count),
    visit_sd = sd(visit_count)
  )

运行后输出结果和手动计算一致:

  • 访问次数均值visit_mean = 2
  • 样本标准差visit_sd = 1

注:R内置的sd()默认计算的是样本标准差(自由度为n-1),如果需要计算总体标准差,自行替换公式即可。

方法2:基础R实现(无需加载第三方包)

# 统计每个id的访问次数
visit_count_per_user <- as.numeric(table(df$id))
# 计算统计量
visit_mean <- mean(visit_count_per_user)
visit_sd <- sd(visit_count_per_user)

常见错误原因

如果直接在原始明细数据集上调用summarise计算,比如写类似summarise(mean = mean(n()))的代码,本质是在统计全表总行数的聚合值,没有拆分到单个用户维度计数,自然得不到正确结果。

内容的提问来源于stack exchange,提问作者D. Fowler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:18:22