有一段SAS程序,需要用R实现。问题主要是关于if和do。
下面SAS程序里,%macro abc的if不能用R 的if statement(if只对比第一行)。所以我考虑用ifelse。这样就解决了t和f的对比问题。
可是后面的Do循环该怎么办呢?特别是那个r。我考虑用R里面的apply()系列函数,但也没想好怎么办。
也许还有更好的办法,欢迎指教。
data One;
input t f u s ;
cards;
0 1 10000 5
5 2 20000 6
2 1 30000 7
3 2 40000 8
0 4 50000 9
7 6 60000 3
2 2 70000 2
;
run;
%macro abc;
sum = 0;
if t - f >=0 then do;
Do i=0 to (f-1);
sum = sum + u * max(0, r);
end;
end;
else do;
Do i=1 to t;
sum = sum + 2;
end;
sum = sum + 88;
end;
drop i;
%mend;
data Two;
set One;
array r{0:7} _temporary_;
r[t] = s;
%abc;
run;