Функция 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. Как мне это сделать?
2 ответа
Вы смешиваете макрос и шаг данных логики. Поскольку это шаг данных, используйте функцию SUBSTR(), а не%substr. Если макрос-переменная состоит из текста, который вы хотите извлечь, заключите его в кавычки, в противном случае оставьте макрос-переменную без кавычек.
gh=substr(&hg, 1, 3);
Примечание: отредактировано, чтобы отразить комментарий.
Если вы создаете набор данных внутри макрофункции, то вы хотите использовать обычную функцию sas, поэтому вам просто нужно использовать substr()
вместо %substr()
,
%let hg=Name;
data gg_;
set sashelp.class;
gh=substr(&hg,1,3);
run;