Функция 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;
Другие вопросы по тегам