Я новичок в SAS и хочу создать макропроцедуру, которая создает значения оси Y для более поздней версии PROC GPLOT.
Говоря простым языком, на этом графике есть два возможных минимальных значения (и максимума). Диапазон оси зависит от того, какое минимальное значение является наименьшим. В противном случае SAS не будет отображать данные за пределами диапазона оси. Я НЕ хочу, чтобы SAS автоматически создавал диапазон для меня. Я хочу сам определить диапазон.
Итак, это моя попытка создать процедуру, которая а) вычисляет два минимальных значения, б) сравнивает два и в) сохраняет меньшее из двух в новой макропеременной. Если я смогу заставить этот работать, процедура max будет легко проделана.
%MACRO min;
%LET ymin1 = %SYSEVALF(&minresult - (((&minresult + &maxresult)/2) * .05);
%PUT ymin1 = &ymin1;
%LET ymin2 = %SYSEVALF(&min - (&min * .05));
%PUT ymin2 = &ymin2;
%IF &ymin1 > &ymin2
%THEN %LET ymin = ymin2;
%ELSE %LET ymin = ymin1;
%PUT ymin = &ymin;
%MEND min;
У меня такое чувство, что я делаю что-то синтаксически не так. Любая помощь приветствуется.
macro
- это сам термин.PROC FCMP
позволяет создавать функции и процедуры, но они не на макроязыке, а на чем-то близком к языку шагов данных. Кроме того, вы должны определить & min / & minresult / & max / & maxresult как параметры макроса; даже если они существуют как глобальные макропеременные, лучше определить их снова с точки зрения стиля. Вы все еще можете вызвать% min (& min, & max, & minresult, & maxresult), и он будет работать нормально. - person Joe   schedule 06.06.2013