Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SAS中的IF-THEN-ELSE宏_Sas_Sas Macro - Fatal编程技术网

SAS中的IF-THEN-ELSE宏

SAS中的IF-THEN-ELSE宏,sas,sas-macro,Sas,Sas Macro,我必须创建EVENT1-EVENT20,但我只是一个接一个地手动添加,添加所有事件和代码都很痛苦,看起来很难看,有没有简单的方法,比如添加宏 DATA Z3_ALL91; SET Z3_ALL8; EVENT1=INPUT('.',$CHAR10.); EVENT2=INPUT('.',$CHAR10.); EVENT3=INPUT('.',$CHAR10.); EVENT4=INPUT('.',$CHAR10.); IF RE1='HO' THEN EVENT1=ERP1; IF RE1

我必须创建EVENT1-EVENT20,但我只是一个接一个地手动添加,添加所有事件和代码都很痛苦,看起来很难看,有没有简单的方法,比如添加宏

DATA Z3_ALL91;
SET Z3_ALL8;

EVENT1=INPUT('.',$CHAR10.);
EVENT2=INPUT('.',$CHAR10.);
EVENT3=INPUT('.',$CHAR10.);
EVENT4=INPUT('.',$CHAR10.);

IF RE1='HO'  THEN EVENT1=ERP1;
IF RE1='RE'  THEN EVENT1='REP';
IF RE1='HSS' THEN EVENT1=ERP1;

IF RE2='HO' THEN EVENT2=ERP2; ELSE
IF RE2='RE' THEN EVENT2='REP';ELSE
IF (RE2='HSS' AND ROH1^="") THEN EVENT2=CATX("_",ERP2,ROH1);ELSE EVENT2=ERP2;

IF RE3='HO' THEN EVENT3=ERP3; ELSE
IF RE3='RE' THEN EVENT3='REP';ELSE
IF (RE3='HSS' AND ROH2>ROH1) THEN EVENT3=CATX("_",ERP3,ROH2);ELSE
IF (RE3='HSS' AND ROH1^=".") THEN EVENT3=CATX("_",ERP3,ROH1);ELSE EVENT3=ERP3;

IF RE4='HO' THEN EVENT4=ERP4; ELSE
IF RE4='RE' THEN EVENT4='REP';ELSE
IF (RE4='HSS' AND ROH3>ROH2) THEN EVENT4=CATX("_",ERP4,ROH3);ELSE
IF (RE4='HSS' AND ROH2>ROH1) THEN EVENT4=CATX("_",ERP4,ROH2);ELSE 
IF (RE4='HSS' AND ROH1^=".") THEN EVENT4=CATX("_",ERP4,ROH1);ELSE EVENT4=ERP4;

RUN;

这是我的尝试

%MACRO EVENTS(N) ; %IF &N = 1 %THEN %DO ; if RE&N = 'HO' then EVENT&N = ERP&N ; else if RE&N = 'RE' then EVENT&N = 'REP' ; else if RE&N = 'HSS' then EVENT&N = ERP&N ; %END ; %ELSE %DO ; if RE&N = 'HO' then EVENT&N = ERP&N ; else if RE&N = 'RE' then EVENT&N = 'REP' ; else %DO L1 = %EVAL(&N - 1) %TO 1 %BY -1 ; %LET L2 = %EVAL(&L1 - 1) ; %IF &L1 = 1 %THEN %DO ; if (RE&N = 'HSS' and ROH&L1 ^= ".") then EVENT&N = catx('_',ERP&N,ROP&L1) ; %END ; %ELSE %DO ; if (RE&N = 'HSS' and ROH&L1 > ROH&L2) then EVENT&N = catx('_',ERP&N,ROP&L1) ; %END ; else %END ; EVENT&N = ERP&N ; %END ; %MEND ; options nosymbolgen ; data z3_all91 ; set z3_all8 ; EVENT1 = input('.',$CHAR10.); EVENT2 = input('.',$CHAR10.); EVENT3 = input('.',$CHAR10.); EVENT4 = input('.',$CHAR10.); %EVENTS(1) ; %EVENTS(2) ; %EVENTS(3) ; %EVENTS(4) ; run ; %宏事件(N); %如果&N=1%,则为%DO; 如果RE&N=‘HO’,则事件&N=ERP&N; 其他的 如果RE&N='RE',则事件&N='REP'; 其他的 如果RE&N=HSS,则事件&N=ERP&N; %结束; %否则%会; 如果RE&N=‘HO’,则事件&N=ERP&N; 其他的 如果RE&N='RE',则事件&N='REP'; 其他的 %执行L1=%EVAL(&N-1)%1%到-1; %设L2=%EVAL(&L1-1); %如果&L1=1%,则为%DO; 如果(RE&N=‘HSS’和ROH&L1^=“.”),则事件&N=catx(‘’、ERP&N、ROP&L1); %结束; %否则%会; 如果(RE&N=‘HSS’和ROH&L1>ROH&L2),则事件&N=catx(‘’、ERP&N、ROP&L1); %结束; 其他的 %结束; 事件&N=ERP&N; %结束; %修补; 选择神经症状原; 数据z3_all91; 将z3_全部设置为8; EVENT1=输入('.',$CHAR10.); EVENT2=输入('.',$CHAR10.); EVENT3=输入('.',$CHAR10.); EVENT4=输入('.',$CHAR10.); %事件(1); %事件(2); %事件(3); %事件(4); 跑 以及日志中生成的代码:

3940 data z3_all91 ; 3941 set z3_all8 ; 3942 EVENT1 = input('.',$CHAR10.); 3943 EVENT2 = input('.',$CHAR10.); 3944 EVENT3 = input('.',$CHAR10.); 3945 EVENT4 = input('.',$CHAR10.); 3946 %EVENTS(1) ; MPRINT(EVENTS): if RE1 = 'HO' then EVENT1 = ERP1 ; MPRINT(EVENTS): else if RE1 = 'RE' then EVENT1 = 'REP' ; MPRINT(EVENTS): else if RE1 = 'HSS' then EVENT1 = ERP1 ; 3947 %EVENTS(2) ; MPRINT(EVENTS): if RE2 = 'HO' then EVENT2 = ERP2 ; MPRINT(EVENTS): else if RE2 = 'RE' then EVENT2 = 'REP' ; MPRINT(EVENTS): else if (RE2 = 'HSS' and ROH1 ^= ".") then EVENT2 = catx('_',ERP2,ROP1) ; MPRINT(EVENTS): else EVENT2 = ERP2 ; 3948 %EVENTS(3) ; MPRINT(EVENTS): if RE3 = 'HO' then EVENT3 = ERP3 ; MPRINT(EVENTS): else if RE3 = 'RE' then EVENT3 = 'REP' ; MPRINT(EVENTS): else if (RE3 = 'HSS' and ROH2 > ROH1) then EVENT3 = catx('_',ERP3,ROP2) ; MPRINT(EVENTS): else if (RE3 = 'HSS' and ROH1 ^= ".") then EVENT3 = catx('_',ERP3,ROP1) ; MPRINT(EVENTS): else EVENT3 = ERP3 ; 3949 %EVENTS(4) ; MPRINT(EVENTS): if RE4 = 'HO' then EVENT4 = ERP4 ; MPRINT(EVENTS): else if RE4 = 'RE' then EVENT4 = 'REP' ; MPRINT(EVENTS): else if (RE4 = 'HSS' and ROH3 > ROH2) then EVENT4 = catx('_',ERP4,ROP3) ; MPRINT(EVENTS): else if (RE4 = 'HSS' and ROH2 > ROH1) then EVENT4 = catx('_',ERP4,ROP2) ; MPRINT(EVENTS): else if (RE4 = 'HSS' and ROH1 ^= ".") then EVENT4 = catx('_',ERP4,ROP1) ; MPRINT(EVENTS): else EVENT4 = ERP4 ; 3950 run ; 3940数据z3_all 91; 3941套z3_all8; 3942事件1=输入('.',$CHAR10.); 3943事件2=输入('.',$CHAR10.); 3944事件3=输入('.',$CHAR10.); 3945事件4=输入('.',$CHAR10.); 3946%事件(1); MPRINT(事件):如果RE1=HO,则事件1=ERP1; MPRINT(EVENTS):如果RE1='RE',则EVENT1='REP'; MPRINT(事件):如果RE1=HSS,则事件1=ERP1; 3947%事件(2); MPRINT(事件):如果RE2=HO,则事件2=ERP2; MPRINT(EVENTS):如果RE2='RE',则EVENT2='REP'; MPRINT(事件):如果(RE2=‘HSS’和ROH1^=“.”),则事件2=catx(“”),ERP2,ROP1; MPRINT(EVENTS):else EVENT2=ERP2; 3948%事件(3); MPRINT(事件):如果RE3=HO,则事件3=ERP3; MPRINT(EVENTS):如果RE3='RE',则EVENT3='REP'; MPRINT(事件):否则如果(RE3='HSS'和ROH2>ROH1),则事件3=catx('',ERP3,ROP2); MPRINT(事件):如果(RE3=‘HSS’和ROH1^=“.”),则事件3=catx(“”),ERP3,ROP1; MPRINT(EVENTS):else EVENT3=ERP3; 3949%事件(4); MPRINT(事件):如果RE4=HO,则事件4=ERP4; MPRINT(EVENTS):如果RE4='RE',则EVENT4='REP'; MPRINT(事件):否则如果(RE4=‘HSS’和ROH3>ROH2),则事件4=catx(‘’、ERP4、ROP3); MPRINT(事件):如果(RE4=‘HSS’和ROH2>ROH1),则事件4=catx(‘’、ERP4、ROP2); MPRINT(事件):如果(RE4=‘HSS’和ROH1^=“.”),则事件4=catx(“”),ERP4,ROP1; MPRINT(EVENTS):else EVENT4=ERP4; 3950次;