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




