平移数据的方法
1. 向前平移(用前一年的数据填补缺失值)
gen var_forward = var[_n-1] if missing(var)
解释:
var 是需要处理的变量。
var[_n-1] 表示取前一行的值。
if missing(var) 限定只有在 var 缺失时才填补。
2. 向后平移(用后一年的数据填补缺失值)
类似地:
gen var_backward = var[_n+1] if missing(var)
解释:
var[_n+1] 表示取后一行的值。
3. 递归填补多行的缺失值
如果需要填补多个连续缺失值,可以使用循环:
gen var_filled = var
replace var_filled = var_filled[_n-1] if missing(var_filled)
重复运行 replace 直到所有缺失值都被填补。
4. 同时结合向前和向后平移
若需更复杂的逻辑(如尽量使用邻近的年份数据),可以结合 cond() 函数:
gen var_filled = cond(!missing(var), var, ///
cond(!missing(var[_n-1]), var[_n-1], var[_n+1]))
5. 跨组处理(如按ID或类别分组)
如果数据按某个 ID 分组(如不同国家/地区),需先按组排序:
sort id year
gen var_filled = var
by id (year): replace var_filled = var_filled[_n-1] if missing(var_filled)
注意事项
如果年份序列不连续(例如 2001 和 2003 间缺失 2002),需要先生成连续的年份。
tsset year
tsfill
确保数据已正确排序(按年份或分组变量)。
根据你的具体需求调整逻辑