You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Stata数据处理:如何生成含指定组观测值均值的变量

解决方法:生成同日期下Strike+50组的Price均值变量

要实现这个需求,我们可以通过先计算各组均值,再匹配到对应观测的方式来完成,具体步骤如下:

步骤1:计算每个(date, strike)组的Price均值并保存临时数据集

首先我们需要先把每个日期、行权价组合的Price均值单独提取出来,方便后续匹配:

// 保存当前数据状态,避免修改原数据
preserve

// 按date和strike分组,计算每组price的均值
collapse (mean) mean_price = price, by(date strike)

// 重命名变量并调整行权价,用于后续匹配
rename strike strike_plus50
replace strike_plus50 = strike_plus50 - 50  // 让原strike=s+50对应到当前strike=s

// 将处理后的均值数据保存为临时文件
tempfile mean_dataset
save `mean_dataset'

// 恢复原数据状态
restore

步骤2:将均值匹配回原数据

接下来我们把临时数据集中的均值,按「相同日期+当前行strike等于临时数据集中的strike_plus50」的规则合并到原数据里:

// 按date和strike匹配,将对应strike+50组的均值合并到原数据
merge m:1 date strike using `mean_dataset', keep(match master) nogen

效果验证

  • 对于原数据中strike=50的观测,合并后的mean_price就是同日期下strike=100组的Price均值;
  • 对于strike=100的观测,mean_price会是同日期下strike=150组的均值(如果该组只有一个观测,均值就是其本身的Price值);
  • 对于strike=150的观测,mean_price则是同日期下strike=200组的Price均值,完全符合你的示例需求。

如果某些日期下不存在strike+50的组,对应的mean_price会显示为缺失值,这是合理的预期结果。

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

火山引擎 最新活动