#sas #macros
#САС #sas-макрос
Вопрос:
Я хотел бы дать переменным собственные имена в макросе SAS, однако я либо получил сообщение об ошибке, либо получил первую букву строки. Вот пример использования следующих кодов SAS:
data trial; %let cate=gender age; %let label="Gender*Age at dx"; do i=1 to countw("amp;cate"); item=scan("amp;cate",i) ; print=scan(%str(amp;label),i,*); output; end; run;
У меня такая ошибка:
ОШИБКА 386-185: Ожидание арифметического выражения. 25385 печать=сканирование(%str(amp;этикетка),i,*);
ОШИБКА 200-322: Символ не распознан и будет проигнорирован.
ОШИБКА 76-322: Синтаксическая ошибка, оператор будет проигнорирован.
Если я изменю коды вот так:
data trial; %let cate=gender age; %let label="Gender*Age at dx"; do i=1 to countw("amp;cate"); item=scan("amp;cate",i) ; print=scan(%str(amp;label),i); output; end; run;
Я получаю print=Возраст вместо print=»Возраст в dx». Есть какие-нибудь намеки на это? Спасибо!
Ответ №1:
В функции отсутствуют кавычки вокруг вашего делиметра, *
, scan()
. Вам также не нужно использовать %str()
.
print=scan(amp;label, i, '*');
Выход:
i item print 1 gender Gender 2 age Age at dx
Я бы также рекомендовал размещать ваши %let
заявления перед этапом обработки данных, чтобы их было немного легче читать.
%let cate=gender age; %let label="Gender*Age at dx"; data trial; ...; run;
Комментарии:
1. Да, добавление кавычек работает. Спасибо за ваше предложение!