b**********i 发帖数: 1059 | 1 在写个macro,automate一个simualation program,有点地方不明。 请教在macro中有
必要把所有的if then, do while 等 都改成 %if %then, %do %while 等的 macro
statement吗? 我现在只是在最外面用macro statement语句,里面的data simulation
和analysis还是用sas statement,原样照搬,程序能run,有什么问题吗? |
l***a 发帖数: 12410 | 2 没问题
simulation
【在 b**********i 的大作中提到】 : 在写个macro,automate一个simualation program,有点地方不明。 请教在macro中有 : 必要把所有的if then, do while 等 都改成 %if %then, %do %while 等的 macro : statement吗? 我现在只是在最外面用macro statement语句,里面的data simulation : 和analysis还是用sas statement,原样照搬,程序能run,有什么问题吗?
|
b**********i 发帖数: 1059 | 3 谢谢了。贴几行我的code,看看规范否?
%macro tryrun;
%let index = 1;
%do %while (&index LE &nrecords);
data parms1;
set specinput;
if _N_ EQ &index;
************************************************************************
******************;
* NOTHING BELOW NEEDS TO BE SPECIFIED;
****************************************************************************
**************;
n2=round(n1*k);
ns = n1 + n2;
* figure out the intercept and trend variance (assume error variance = 1);
* figure out the standard deviation at the end of the study;
errvar = 1;
errsd = sqrt(errvar);
intvar = (ICCbeg * errvar) / (1.0 - ICCbeg);
intsd = sqrt(intvar);
a = (nis - 1)**2;
b = 2 * (nis - 1) * recorr * intsd;
c = intvar - (ICCend * errvar) / (1.0 - ICCend);
timevar = ((0-b + sqrt(b**2 - 4*a*c)) / (2*a))**2;
timesd = sqrt(timevar);
inttimecov = recorr * intsd * timesd; |
d**********r 发帖数: 24123 | 4 if then 要看你使用的目的了。加上 % 表示你控制macro产生出来的语句。
举个例子1:
N=10;
%if &a = 1 %then
M = 1;
%else
M = 2;
那么运行的时候,如果 a=1 那么SAS 会生成:
N=10;
M=1;
如果 A <> 1 那么 SAS 会生成:
N=10;
M=2; |
b**********i 发帖数: 1059 | 5 谢谢,解释的很清楚。 只是生成的语句不一样,效果是一样的。我放心了。
【在 d**********r 的大作中提到】 : if then 要看你使用的目的了。加上 % 表示你控制macro产生出来的语句。 : 举个例子1: : N=10; : %if &a = 1 %then : M = 1; : %else : M = 2; : 那么运行的时候,如果 a=1 那么SAS 会生成: : N=10; : M=1;
|