什么时候使用%do%end vs sas结束循环

时间:2015-01-26 23:05:14

标签: sas

我是宏观世界的新手,并试图找出何时使用%do%end vs do end in sas。除了在datastep之外使用%do%end之外,还有其他复杂性。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

do-end是数据步骤语法,只能在数据步骤中执行。这主要用于每行多次执行相同的逻辑,例如,与数组。

do-end也可以垂直使用'在输出行之前从输入数据源一次读取多行(由于模糊原因而知道为DOW-loop)。

%do-%end是宏语法,仅在宏定义中有效,即在%macro yourmacroname;和相应的%mend;语句之间。您可以使用宏为多个单独的数据步骤或过程生成代码,或在单个数据步骤中生成重复代码。

如果您在数据步骤中生成重复代码,并且您可以选择使用%do-%enddo-end,那么坚持{ {1}}并避免使用宏,因为这会给代码增加额外的复杂性。

答案 1 :(得分:0)

如果您想在数据步骤(水平方向,即跨行)中执行此操作,请使用do-end。如果你想在数据步骤之外(即一遍又一遍地执行一个或多个过程),那么使用%do-%end。

虽然有时您可以通过任何给定的灵活约束来逃避,但上述内容应该指导您开始使用。