Я вычисляю статистику интервалов (стандартное отклонение, например, одноминутных интервалов) финансовых данных временных рядов. Моему коду удалось получить результаты для всех интервалов, содержащих данные, но для интервалов, которые не содержат каких-либо наблюдений в временном ряду, я хотел бы вставить пустую строку только для поддержания последовательности времени.SAS: Вставить пустые строки
Например, если есть данные с 10:00 до 10:01, 10:02 до 10:03, а не 10:01 до 10:02, мой выход будет:
10:01 stat1 stat2 stat3
10:03 stat1 stat2 stat3
Это бы идеально, если результат может быть (я хочу некоторые значения быть 0, некоторые не хватает «»):
10:01 stat1 stat2 stat3
10:02 0 0 .
10:03 stat1 stat2 stat3
что я сделал:
data v_temp/view = v_temp;
set &taq_ds;
where TIME_M between &start_time and &end_time;
INTV = hms(00, ceil(TIME_M/'00:01:00't),00); *create one minute interval;
format INTV tod.; *format hh:mm:ss;
run;
proc means data = sorted noprint;
by SYM_ROOT DATE INTV;
var PRICE;
weight SIZE;
output
out=oneMinStats(drop=_TYPE_ _FREQ_)
n=NTRADES mean=VWAP sumwgt=SUMSHS max=HI min=LO std=SIGMAPRC
idgroup(max(TIME_M) last out(price size ex time_m)=LASTTRD LASTSIZE LASTEX LASTTIME);
run;
для некоторых не-эк e, есть много пробелов, подобных этому. Что было бы эффективным способом генерации этих заполняющих строк?
FYI, код INTV = намного сложнее, чем нужно. Если это действительно значения времени, а не дата и время, INTV = 60 * ceil (TIME_M/60); достаточно. Значения времени - это просто целое число секунд, поэтому все действия HMS() умножаются на 60, а все/'00: 01: 00't делает деление на 60. (Но если вы предпочитаете, чтобы этот способ был больше ясно, что происходит, это нормально, конечно.) – Joe
Да, ваш путь определенно более ясен. Спасибо Джо! –
Alex, если ответ ниже поможет, пожалуйста, поддержите его и/или примите его. Если нет, прокомментируйте, о чем у вас все еще есть вопросы. Благодаря! – Joe