R语言事件研究:按appid与事件日分组计算事件前ccu_avg均值
R事件研究估计窗口ccu均值计算方案
核心需求
- 新增
est_ccu_avg列,按appid与Eventdate1组合分组计算,适配单个appid对应多个事件的场景 - 计算规则:仅统计事件日之前样本的
ccu_avg均值,事件日及之后的样本不纳入计算范围
原有代码问题
之前编写的代码存在两个核心错误:
- 没有先按
appid和Eventdate1分组,会导致全表数据混算 - 索引逻辑错误:
unique(study$appid)返回的是去重后的appid向量,无法逐行匹配分组范围,直接引用全量study数据集也会突破分组边界
正确实现代码
library(dplyr) study <- study %>% # 按游戏ID、事件日期双维度分组,隔离不同事件的计算范围 group_by(appid, Eventdate1) %>% mutate( # 仅保留当前组内日期早于事件日的样本计算均值,na.rm可按需配置是否忽略缺失值 est_ccu_avg = mean(ccu_avg[datefinal < Eventdate1], na.rm = TRUE) ) %>% ungroup()
逻辑说明
- 分组操作后,所有计算会在单个
appid+单个Eventdate1的组内独立执行,不会出现跨事件、跨游戏的数据混算 - 方括号内的
datefinal < Eventdate1会逐行判断样本日期是否在事件日之前,仅筛选符合估计窗口要求的ccu_avg值参与均值计算 - 计算完成后执行
ungroup()取消分组,避免后续操作受分组状态影响
用提供的前6行样例数据验证:6条样本的datefinal均早于Eventdate1(18949),计算得到的est_ccu_avg约为30351.83,符合预期。
内容的提问来源于stack exchange,提问作者Sjoerd S
相关产品推荐
相关产品推荐

