У меня есть набор данных (см. Рисунок ниже). Мне нужно заполнить столбец stitched_price. Для строки 1 мне нужно использовать значение из «цены». Это работает.Как создать переменную SAS, которая зависит от самого себя?
Для ряда строк 2, мне нужно сделать следующее: stitched_price = lag(stitched_price) * (trade_return + 1)
. Однако это не работает и оставляет все строки> 1 пустым.
Вот мой код:
data test2;
set test;
if _N_ = 1 then stitched_price = price;
else stitched_price = lag(stitched_price) * (1 + trade_return);
run;
Я не знаю, почему это происходит. Я понимаю, что есть сложности, связанные с использованием задержки в выражении if, но есть ли способ обойти это?
возможный дубликат [функция задержки не работает в SAS] (http://stackoverflow.com/questions/9484728/lag-function-doesnt-work-in-sas) –
@RobertPenridge Не верно. Я прочитал этот вопрос, который заставил меня поверить, что приведенный выше код будет работать. Требуется значительно больше усилий, чтобы печатать и делать скриншоты моей работы, чем просто искать ее. Я спросил только после поиска нескольких мест. – navkast
Ответы на связанный вопрос обсуждают как правильно использовать 'lag()', так и упоминать использование оператора 'Сохранить' в качестве альтернативы. –