假设你下载股票或债券的数据,你有每个交易日的股票价格或收益。所以你有两个变量,股票价格(或者债券收益率)和日期。在使用前一个开放日作为那些缺失日的值时,将周末和假日添加到dates变量的最快方法是什么?
例如,如果是2022年7月1日,就会有一个股票价格,比方说100美元,相当于那个日期,但在长周末(7月4日),数据中没有观察到7月2日至4日的数据。在下一个交易日,即7月5日之前,你如何将股票价格等于100美元的日期相加?
我使用do循环创建日期,然后进行合并和保留,但我觉得应该有一个更快的方法。
发布于 2022-08-08 18:26:32
您只需在DO循环中添加一个输出语句。最棘手的是下一次约会。下面是一个使用第二个SET语句的方法,该语句被一个观察结果所抵消。
data want;
set have ;
by date;
set have(firstobs=2 keep=date rename=(date=next_date)) have(obs=0 drop=_all_);
next_date = coalesce(next_date,date);
do date=date to next_date;
output;
end;
run;但你的真实数据可能有多只股票。因此,添加一些按组处理。
data want;
set have ;
by stock date;
set have(firstobs=2 keep=date rename=(date=next_date)) have(obs=0 drop=_all_);
if last.stock the next_date=date;
do date=date to next_date;
output;
end;
run;https://stackoverflow.com/questions/73282367
复制相似问题