Stata:计算一段时间内的平均值

Stata:计算一段时间内的平均值,stata,Stata,我需要做以下20个周期的计算,但没有使用forval命令,因为我只是在学习如何处理Stata 这是我需要重复20节课的内容: egen avg1 = mean(price1) if Period == 1 egen avg2 = mean(price2) if Period == 1 gen AVG = avg1+avg2 gen AVG_t1=AVG/2 drop avg1 avg2 AVG 并尝试使用forval解决此问题: sort Period local j = Peri

我需要做以下20个周期的计算,但没有使用
forval
命令,因为我只是在学习如何处理Stata

这是我需要重复20节课的内容:

egen avg1 = mean(price1) if  Period == 1
egen avg2 = mean(price2) if  Period == 1
gen AVG = avg1+avg2
gen AVG_t1=AVG/2
drop avg1 avg2 AVG
并尝试使用
forval
解决此问题:

    sort Period
local j = Period
forval j = 1/20 { 
     egen avg1 = mean(price1) if  Period == `j' 
     egen avg2 = mean(price2) if  Period == `j'
     gen AVG = avg1+avg2 if  Period == `j' 
     gen AVG_t`j'=AVG/2 if  Period == `j'  
     drop avg1 avg2 AVG if Period == `j' 
} 

研究
egen
的帮助,看看它比您想象的更灵活

 egen avg1 = mean(price1), by(Period) 
 egen avg2 = mean(price2), by(Period) 
 gen AVG_t1 = (avg1 + avg2) / 2 
您的循环将失败,因为第二次循环已存在。记录的是

 bysort Period: egen avg1 = mean(price1) 
 by Period: egen avg2 = mean(price2) 

但是上面的语法会起作用

“相处不好”是什么意思?你对问题描述得越好,你的答案就越好。您是否收到错误消息或只是意外的结果?在Stata中,处理数据子集的首选方法是通过
by:
前缀。请参阅由和Nick Cox提供的帮助。