Substr с именем макрокоманды
Я пытаюсь использовать функцию substr в макросах SAS следующим образом:
%let hg=Name;
data gg_;
set sashelp.class;
gh=%substr(&hg,1,3);
run;
а также я попробовал
data gg_;
set sashelp.class;
gh=%sysfunc(substr(&hg,1,3));
run;
Здесь Name - это переменная в sashelp.class
Но я не получаю первые три символа из переменной Name в gh.
Как мне это сделать?
Ответы
Ответ 1
Вы смешиваете макрос и логику шага данных.
Поскольку это шаг данных, используйте функцию SUBSTR(), а не% substr. Если макропеременная состоит из текста, который вы хотите извлечь, а затем укажите его, в противном случае оставить макрокоманду без кавычек.
gh=substr(&hg, 1, 3);
Примечание: отредактировано, чтобы отразить комментарий.
Ответ 2
Если вы создаете набор данных внутри макрофункции, тогда вы хотите использовать нормальную функцию sas, поэтому вам просто нужно использовать substr()
вместо %substr()
.
%let hg=Name;
data gg_;
set sashelp.class;
gh=substr(&hg,1,3);
run;