SAS:通过复制最后一行构造 Do Until
SAS: Construct Do Until by Copying Last Row
我有截至 2013 年的年度数据,但我想使用那一年并将其复制到 2014 年、2015 年,并最终复制到 2016 年(无论我们拥有的数据是哪一年)。使用以下测试数据:
DATA TEST;
INPUT YEAR Q1 Q2 Q3 Q4;
DATALINES;
2012 20 30 40 50
2013 21 29 43 47
;
RUN;
我最终想要的数据集具有:
2012 20 30 40 50
2013 21 29 43 47
2014 21 29 43 47
2015 21 29 43 47
2016 21 29 43 47
这只是一个简单的例子,因为我的数据更大更复杂,但是有没有一种快速的 DO UNTIL
和 OUTPUT
方法可以根据需要多次复制最后一行并制作YEAR+1
每次迭代?本质上,复制最后一行直到 YEAR
等于文件中的最新年份。
您只需要检测数据的结尾。使用 END= 选项,或者如果您的数据已分组,请使用 LAST。来自 BY 组处理的标志。
data want ;
set have end=eof;
output;
if eof then do year=year+1 to 2016;
output;
end;
run;
我有截至 2013 年的年度数据,但我想使用那一年并将其复制到 2014 年、2015 年,并最终复制到 2016 年(无论我们拥有的数据是哪一年)。使用以下测试数据:
DATA TEST;
INPUT YEAR Q1 Q2 Q3 Q4;
DATALINES;
2012 20 30 40 50
2013 21 29 43 47
;
RUN;
我最终想要的数据集具有:
2012 20 30 40 50
2013 21 29 43 47
2014 21 29 43 47
2015 21 29 43 47
2016 21 29 43 47
这只是一个简单的例子,因为我的数据更大更复杂,但是有没有一种快速的 DO UNTIL
和 OUTPUT
方法可以根据需要多次复制最后一行并制作YEAR+1
每次迭代?本质上,复制最后一行直到 YEAR
等于文件中的最新年份。
您只需要检测数据的结尾。使用 END= 选项,或者如果您的数据已分组,请使用 LAST。来自 BY 组处理的标志。
data want ;
set have end=eof;
output;
if eof then do year=year+1 to 2016;
output;
end;
run;