Автоматизация макросов с помощью подсказок в SAS EG

вот мой стол

 data:
 ax bx cx dx ex fx
 1   2  3  4  5 5
 2   3  5  1  0 5
 3   7  8  9  1 4

вот мой основной код

%macro example(c= , b= ,a= );
 data temp;
 set  data;
diff = &c-(&b+&a);
run;
%mend example;
% example(c=cx ,b=bx ,a=ax)

Я хочу автоматизировать diff = c-(b+a), установив функцию, похожую на подсказку, в SAS EG, но я не знаю, как это сделать? Моя цель состоит в том, чтобы иметь возможность изменять свои функции (например, вместо cx я хочу поставить f или вместо ax, e и т. д.) в уравнении «diff», потому что мои фактические данные состоят из тысяч столбцов. Если вы поможете мне, я ценю.


person Jonsi Billups    schedule 03.05.2016    source источник


Ответы (2)


Чтобы автоматизировать это, вы, вероятно, захотите сделать три подсказки. По одному для каждой переменной (c,b,a). (Конечно, называйте их описательно, а не c, b, a!) Выберите «использовать во всем проекте» и «требуется не пустое значение». Может быть, добавить еще какой-нибудь полезный текст, чтобы описать, что они из себя представляют.

Затем вам нужно иметь способ их заполнения. Вы можете либо заполнить их из статического списка (ввести возможные значения), так же, как открытые текстовые поля, где вы будете вводить их каждый раз самостоятельно, либо вы можете заполнить их из источника данных. Механизм заполнения из источника данных зависит от вашей локальной настройки — используете ли вы «локальный EG» или, например, EG подключен к серверу метаданных — но в целом он должен быть довольно простым.

Либо в «Пользователь выбирает значения из статического списка», выберите «Получить значения», затем «Обзор» для файла данных SAS; или «Пользователь выбирает значения из динамического списка», сделайте то же самое. Последний всегда будет проверять источник данных на наличие обновлений, в то время как первый просто заполняет список во время создания подсказки.

Наконец, в вашей программе вызов макроса будет выглядеть так:

%example(c=&c ,b=&b ,a=&a)

где &c &b &a — это имена подсказок («короткое» имя, если вы также дали ему более длинное текстовое имя).

person Joe    schedule 03.05.2016

Что вы хотите, это что-то вроде этого:

/*Define Prompt*/
%window info
  #5 @5 'Var1:'
  #5 @13 var1 2 attr=underline
  #7 @5 'Var2:'
  #7 @13 Var2 2 attr=underline
  #9 @5 'Var3:'
  #9 @13 Var3 2 attr=underline;

/*Show Prompt*/
%display info;

/*Display Macro Variables in the Log*/
%put &var1;
%put &var2;
%put &var3;

%example(c=&var1 ,b=&var2 ,a=&var3)
person paul frith    schedule 03.05.2016
comment
В ЕГ это не работает. EG имеет собственный интерфейс подсказок. - person Joe; 04.05.2016
comment
Извините - пропустил сторону Enterprise Guide. - person paul frith; 05.05.2016