Sql SAS:在表中循环并插入行

Sql SAS:在表中循环并插入行,sql,tsql,multidimensional-array,sas,Sql,Tsql,Multidimensional Array,Sas,这里是初学者,我希望这不是一个模糊的问题 背景:我有一个表,其中Inventor ID链接到年份。代表发明人注册专利的所有年份 PROC SQL; CREATE TABLE Inv_Year AS SELECT a.InventorID, a.Year FROM Inv_Year_Pat AS a; QUIT; 所以这些行看起来像这样 InventorID | Year 1 1989 2 2002 3

这里是初学者,我希望这不是一个模糊的问题

背景:我有一个表,其中Inventor ID链接到年份。代表发明人注册专利的所有年份

PROC SQL;
    CREATE TABLE Inv_Year AS
       SELECT a.InventorID, a.Year
       FROM Inv_Year_Pat AS a;
QUIT;
所以这些行看起来像这样

InventorID | Year
1            1989
2            2002
3            1990
3            1992
3            1994
任务:发明者3号发明于1990年、1992年和1994年。我需要填写发明人活跃年份之间的任何年份。导致这个

InventorID | Year
1            1989
2            2002
3            1990
3            1991
3            1992
3            1993
3            1994
如何在SAS中解决此问题

data want ; set have ; by InventorID ; prevYear = lag(Year) ; if first.InventorID then prevYear = . ; /* If not first row per InventorID and difference is > 1 year */ if not missing(prevYear) and sum(Year,-prevYear) > 1 then do ; /* Store current Year */ thisYear = Year ; /* Insert missing years */ do Year = prevYear + 1 to thisYear ; output ; end ; end ; else output ; drop prevYear thisYear ; run ; 数据需求; 集有; 发明家; 上一年=滞后(年); 如果first.InventorID,则prevYear=; /*如果不是每个InventorID的第一行,且差异大于1年*/ 如果未缺失(上一年)和总和(上一年)>1,则执行该操作; /*存储本年度*/ 今年=年; /*插入缺失的年份*/ do年=上一年+1至本年; 产出; 结束; 结束; 其他输出; 今年下降; 跑 数据需求; 集有; 发明家; 上一年=滞后(年); 如果first.InventorID,则prevYear=; /*如果不是每个InventorID的第一行,且差异大于1年*/ 如果未缺失(上一年)和总和(上一年)>1,则执行该操作; /*存储本年度*/ 今年=年; /*插入缺失的年份*/ do年=上一年+1至本年; 产出; 结束; 结束; 其他输出; 今年下降; 跑