如何基于面板数据的事件虚拟变量创建事件窗口相对时间标识变量
R面板数据生成事件窗口相对天数变量解决方法
报错原因
你调用的filter是dplyr包专为数据框设计的处理函数,无法直接作用于数值向量,因此触发了类匹配错误。除此之外你原有的代码没有按个股分组处理,会混淆不同股票的事件节点,计算结果不符合面板数据的分组要求。
正确实现代码
使用tidyverse生态工具处理分组面板数据更简洁,输出结果和你给出的示例完全匹配:
# 首次使用先安装依赖 # install.packages(c("dplyr", "lubridate")) library(dplyr) library(lubridate) Kurse_Gesamt <- Kurse_Gesamt %>% # 按个股分组,且按日期排序保证时间顺序正确 group_by(Symbol) %>% arrange(dmy(Date), .by_group = TRUE) %>% # 定位每个股票事件日(Event1=1)的行位置 mutate(event_row = which(Event1 == 1)[1], # 计算当前行与事件行的相对天数 New = row_number() - event_row, # 仅保留前后4天的相对数值,其余设为NA New = ifelse(New %in% -4:4, New, NA)) %>% # 删除辅助计算列 select(-event_row) %>% ungroup()
逻辑说明
- 分组排序:保证每个股票的观测独立按时间顺序排列,避免跨股票的计算串扰
- 事件定位:单独取每个股票的事件节点位置,符合面板数据的分组处理逻辑
- 范围截断:仅保留事件前后4天的相对天数,超出范围的观测自动设为NA,完全匹配你给出的示例输出规则
内容的提问来源于stack exchange,提问作者user17621
相关产品推荐
相关产品推荐

