带宏的SAS DO循环
首先,这是为了上课,我不喜欢这种语言。打印数字的平方根很简单。目标是用宏变量替换do循环中的值。以下是我的源代码:带宏的SAS DO循环,sas,Sas,首先,这是为了上课,我不喜欢这种语言。打印数字的平方根很简单。目标是用宏变量替换do循环中的值。以下是我的源代码: %LET Start_Value = 1; %LET Stop_Value = 5; DATA sqrt_table; DO &Start_Value. TO &Stop_Value.; Sqrt_n = SQRT(&Start_Value.); OUTPUT; END; RUN; TITLE 'Square root table from 1
%LET Start_Value = 1;
%LET Stop_Value = 5;
DATA sqrt_table;
DO &Start_Value. TO &Stop_Value.;
Sqrt_n = SQRT(&Start_Value.);
OUTPUT;
END;
RUN;
TITLE 'Square root table from 1 to 5';
PROC PRINT DATA = sqrt_table noobs;
RUN;
TITLE;
日志显示错误在DO&Start_值中。“无法识别符号”
我遵循了给定的源代码,我已经按原样贴花了宏,我正在按我阅读的方式访问它们。问题出在哪里?宏代码通常用于替换常量文本,在本例中尤其如此。首先获得一个没有任何宏变量的工作DO循环,然后替换要随宏变量引用而变化的部分 因此,迭代DO循环的基本语法是:
do VAR=START to END;
...
end;
其中,VAR
是变量名,start
和end
是数值表达式
将其与您尝试的模式进行比较,您可以看到您已经省略了VAR=
部分
此外,赋值语句将在DO循环的每次迭代中将相同的值赋值给SQRT\u N
。因为你基本上已经写好了
Sqrt_n = SQRT(1);
请记住,宏变量只是帮助您生成希望SAS实际运行的程序的方法。如果您是SAS中的begginer,请不要将宏lanauge与4GL混合使用。这是你需要的
%LET Start_Value = 1;
%LET Stop_Value = 5;
DATA sqrt_table;
DO i = &Start_Value. TO &Stop_Value.;
Sqrt_n = SQRT(i);
OUTPUT;
END;
RUN;
说你不喜欢一种语言是一种向用户寻求帮助的好方法。我就是这样做的,这就是我获得上述代码和当前编译错误的原因。所以你修复了
do
循环的语法?那任务书呢?您在do
循环中使用了什么变量名?您是否确保在sqrt()
函数调用中引用该变量?太好了,非常感谢。至于宏,这是我们在进入R之前在我的统计认证中涉及的最后一个单元。这是我被指示要做的。