SAS를 처음 사용하고 나중 PROC GPLOT에 대한 y 축 값을 만드는 매크로 프로 시저를 만들고 싶습니다.SAS 매크로 if then else
일반 영어의 경우이 그래프에는 두 가지 가능한 최소값 (및 최대 값)이 있습니다. 축 범위는 최소값이 가장 작은 값에 따라 다릅니다. 그렇지 않으면 SAS는 축 범위 밖에 데이터를 표시하지 않습니다. SAS가 자동으로 범위를 생성하는 것을 원치 않습니다. 내가 직접 범위를 정의하고 싶습니다.
그래서 이것은 a) 두 개의 최소값을 계산하고, b) 두 개를 비교하고, c) 두 개 중 작은 것을 새로운 매크로 변수에 저장하는 시도입니다. 이 프로그램을 작동 시키면 최대 절차가 쉽게 수행 될 수 있습니다.
%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;
나는 내가 잘못 구문 뭔가를하고있는 중이 야 느낌이 듭니다. 어떤 도움을 주셔서 감사합니다.
이%let ymin = %sysfunc(min(&ymin1,&ymin2));
첫 Ymin를 선언에서) 누락 된 이외의 당신이 특정 구문 오류가 있다는 것입니다 : 물건을 그냥 ymin1/2에서 Ymin를 정의하면
몇 가지 참고 사항 - 매크로 절차 같은 건 없다; '매크로'는 용어 자체입니다. 'PROC FCMP'는 함수와 프로 시저를 만들 수있게 해주지 만 매크로 언어가 아니라 데이터 단계 언어에 가깝습니다. 또한 매크로 매개 변수로 & min/& minresult/& max/& maxresult를 정의해야합니다. 매크로 매크로 변수로 존재하더라도, 다시 스타일을 정의하는 것이 좋습니다. 여전히 % 분 (& min, & max, & minresult, & maxresult)을 호출 할 수 있으며 정상적으로 작동합니다. – Joe