何时在sas中使用%do%end vs do end循环

何时在sas中使用%do%end vs do end循环,sas,Sas,我对宏世界还不熟悉,正试图弄清楚在sas中何时使用%do%end和do end。除了在datastep外部使用%do%end之外,还有其他复杂之处。非常感谢您的帮助。如果您希望在水平方向的数据步内(即跨行)执行此操作,请使用do end。如果要在数据步骤之外执行,即反复执行一个或多个过程,请使用%do-%end 尽管有时您可能不受任何一个给定的灵活约束,但以上内容应能指导您完成入门过程。do end是数据步骤语法,只能在数据步骤内执行。这主要用于每行多次形成相同的逻辑,例如使用阵列 do end

我对宏世界还不熟悉,正试图弄清楚在sas中何时使用%do%end和do end。除了在datastep外部使用%do%end之外,还有其他复杂之处。非常感谢您的帮助。

如果您希望在水平方向的数据步内(即跨行)执行此操作,请使用do end。如果要在数据步骤之外执行,即反复执行一个或多个过程,请使用%do-%end

尽管有时您可能不受任何一个给定的灵活约束,但以上内容应能指导您完成入门过程。

do end是数据步骤语法,只能在数据步骤内执行。这主要用于每行多次形成相同的逻辑,例如使用阵列

do end还可以用于“垂直”从输入数据源一次读取多行,然后再输出一行,因为模糊的原因,该行被称为一个结构

%do-%end是宏语法,仅在宏定义内有效,即介于%macro YOURCOMANME;以及相应的百分比;陈述可以使用宏为多个单独的数据步骤或过程生成代码,也可以在单个数据步骤中生成重复代码


如果在数据步骤中生成重复代码,并且可以选择使用%do-%end或do end,通常最好坚持使用do end并避免使用宏,因为这会增加代码的复杂性

道琼斯循环参考指数+1。除了您提到的用例之外,它还可用于在单个数据步骤(例如所谓的Double DOW循环)内对数据集进行多次传递。虽然我不确定它命名的原因是否像你所说的那样晦涩难懂我总是听说这是多夫曼·惠特洛克循环,因为它是SAS-L上两个最著名的推广人。。。以前从未听说过道琼斯指数。那真是令人敬畏。我已经想到了一些应该简化我的代码的任务。@Rob我很惊讶你在这里还没有遇到它。我想它并不总是被明确地确定为这样。