Переменные или макропеременные, используемые в вычислениях - PullRequest
0 голосов
/ 27 апреля 2018

Я создал числовую переменную с помощью диспетчера подсказок в EG.

Эта переменная называется HYr для самого высокого года данных, которые я получаю.

При запуске программы я создаю 4 новые переменные в зависимости от самого высокого года, и именно здесь у меня возникают проблемы.

У меня есть следующее:

%Let Yr2 = &HYr. - 1;

%Let Yr3 = "&HYr." - 2;

%Let Yr4 = &HYr. - 3;

%Let Yr5 = '&HYr.' - 4;

Я пытаюсь вычесть значение из года, и новая переменная будет использоваться при определении диапазонов дат, которые выводятся. Я пробую несколько вещей и учусь в процессе, но я все еще застрял.

Я знаю, что это, вероятно, простая проблема с синтаксисом, и если у меня будет достаточно времени, я, вероятно, смогу ее получить, но никто в моем офисе не обладает лучшими навыками SAS, чем я, и это немного.

спасибо заранее.

1 Ответ

0 голосов
/ 27 апреля 2018

Используйте %EVAL(), чтобы делать вычисления с целыми числами и макропеременными.

%let HYR = 2018;
%Let Yr2 = %eval(&HYr. - 1);
%Let Yr5 = %eval(&HYr. - 4);

%put HYR: &hyr;
%put YR2: &yr2.;
%put YR5: &yr5.;

РЕДАКТИРОВАТЬ: Если вы пытались сделать другие вычисления, которые включают десятичные дроби, вам нужно будет использовать %SYSEVALF вместо.

%let HYR = 2018;
%Let Yr2 = %sysevalf(&HYr. - 0.1);
%Let Yr5 = %sysevalf(&HYr. - 0.4);

%put HYR: &hyr;
%put YR2: &yr2.;
%put YR5: &yr5.;
...