Markqb 发表于 2023-4-3 11:11 
可以使用panel命令中的lags选项来生成滞后项。具体而言,可以先将数据集按照ID和Year排序,然后使用panel命 ...
我最后用了种奇怪的方法,你看看如何。
由于我需要的是lag的price index。 但是由于是quarterly数据,你的方法太占用内存了,所以我是这么干的
sort Close_Qtime
bys Close_Qtime: gen dup=[_n]
/*只保留每个quarter的第一个数据,然后生成lag。这样的lag是连续的而且正确的
sort dup Close_Qtime
bys dup :gen indexsamplelag=index[_n-1] if dup==1
/*这个时候每一个季度比如2022q1只有一个indexsamplelag数据,再对于所有的2022q1都生成一个indexlag等于他就好,我这里用的是sum
bys Close_Qtime: egen indexlag=sum(indexsample)
/*因为是lag term,所以第一个季度的结果不应该是0,而是.
replace indexlag=. if indexlag==0