技术问询:计算日内变量与指定日期前后两日总值的比值(附Stata示例)
我来帮你搞定这个Stata里的变量计算需求~ 按照你的要求,我们需要给每个观测值生成adjusted变量,公式是Intraday除以对应name下当日和前一日daily值的总和,具体操作步骤和代码如下:
1. 先确保数据正确排序
因为要获取每个name分组下前一天的daily值,首先得按name和date排序,保证日期顺序正确:
sort name date
2. 生成前一日的daily滞后值
用bysort分组命令,给每个name组生成前一天的daily值(标记为lag_daily):
bysort name: gen lag_daily = L.daily
这里的L.是Stata里的滞后运算符,代表取当前观测值的上一个观测值(因为已经按date排序,所以就是前一天的值)。
3. 计算当日+前一日的daily总和
生成一个临时变量存储分母:
gen daily_sum = daily + lag_daily
4. 计算最终的adjusted变量
最后按公式计算,同时处理分母为0或缺失的情况(避免出现错误值):
gen adjusted = cond(missing(daily_sum) | daily_sum == 0, ., Intraday / daily_sum)
这里的cond()函数是用来做条件判断的:如果daily_sum缺失或者为0,就把adjusted设为缺失值,否则就执行除法计算。
针对你给出的示例数据的验证
比如你示例里name="A"且date=19693的两个观测值,它们的daily是3,假设前一天(date=19692)的daily值是2,那daily_sum就是3+2=5,对应的两个adjusted值就是1/5=0.2和2/5=0.4,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Amin Karimi
相关产品推荐
相关产品推荐

