问题标签 [sas-macro]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sas - 从目录中检索 SAS 宏
谁能提供从永久目录中检索SAS 宏的语法?(即复制到我的 work.sasmacr 位置)
我不需要这个作为我的自动调用的一部分,因为我不会总是连接到这个库......
sas - 清除用于存储已编译 SAS 宏的库
我有一个程序,它使用以下语法在库中创建存储的编译宏:
但是,之后我似乎无法重新分配我的库(MyLib) - 我收到以下消息(sas 9.1.3):
任何人都可以建议吗?
sql - 正则表达式将空格分隔列表转换为 SQL where 子句
我几乎感到尴尬,但我正在努力创建一个正则表达式来更改类似于cat dog mouse
SQL where 子句的内容:
和
我明白了
哎哟。帮助表示赞赏。
编辑:我最终使用了两个连续的正则表达式。因为我需要在 SAS 宏中使用它并且我希望我的代码简洁,所以我编写了这个宏:
感谢所有回复的人!
sas - SAS 宏变量更改
一般来说,我们如何处理宏变量内部需要修改的情况;例如,假设我有这个宏:
当我想要 %test(3) 然后 arraytwo 需要采用维度 4... 时,我们如何管理这些情况?
sas - SAS 宏变量引用连接
以下代码从 excel 文件中读取手机账单并进行大量清理/报告。
为了让我的生活更轻松,我尝试使用宏变量来更新对 March 的所有引用。我最初的想法如下,行不通。
它给出了以下错误:
如何获得对变量月份的引用以正确更新?
sas - 将文字日期参数转换为宏中的 SAS 日期值
我想创建一个 SAS 宏,它以文字日期(例如'31may2011'd)作为参数。在宏内部,我想将其转换为 SAS 日期值(例如 18778)。
是优雅的方式来实现这一点吗?当然我可以通过解析文字字符串来做到这一点,但我认为必须有更好的方法。
我使用 SAS 9.1.3
variables - 通过数据步骤连接 SAS 变量
我正在寻找一种在执行数据步骤时创建包含数据集某些值的字符串变量的方法。
示例数据集 work.test:
所以最后,变量看起来像:OneTwoFour(甚至更好的 FourTwoOne)。这看起来很简单,但我似乎找不到办法做到这一点。我还尝试使用这样的宏变量:
但这给出了:
所以我只得到最后一个值。我知道这一定是因为我对这个宏工具有一些误解,但我不明白为什么变量中只有最后一个值。我以为只有最后一次调用 symput 才实际执行了它或其他什么,但是当我将代码调整为:
然后我确实得到了它们:
所以我最后的猜测是,通过数据步骤,'call symput...' 行实际上被添加到宏处理器中,其中 "&stringvar" 已经被替换,并且只有在最后的语句之后它们才会全部执行。
这是一个很好的假设还是有其他解释?回到最初的问题:有没有一种简单的方法可以实现这一点(具有所需的变量)?
sas - 如何使 SAS 宏通过变量/列运行?
我第一次尝试使用 SAS 宏。我的基本问题是:我有一个包含 10000 个变量的数据集。我需要单独获取每一列,创建一个新的条件变量,存储结果,然后移动到下一列。这些列不是按顺序排列的。SAS 用于标识列的语法是什么(类似于“ _ N _ ”标识行的方式)?
这里有更多信息。数据看起来像这样:
我需要查看 v1 的值,计算有多少 obs 高于 x 值,有多少低于 x 值,将这些数字记录在数据集中,然后转到 v2、v3、... v10000。最后,我将有一个数据集,该数据集将显示我的 10000 个变量中的每一个变量高于值 x 的 obs 数和低于值 x 的 obs 数。
我已经编写了代码,因为我会在标准 SAS 代码中为一个变量编写代码并且它可以工作,现在我的意图是将该代码转换为宏代码,但我不知道如何构建一个从一个移动的循环列到下一个。
您可以提供的任何帮助或参考将不胜感激。
谢谢。
sas - SAS -> Shell DB2 Passthrough 和宏解析
我正在尝试自动化一项工作,该工作涉及通过网络以及在实际 db2 服务器和我们的 SAS 服务器之间传递的大量数据。我想做的是通过传统的通行证...
变成这样的东西:
我遇到了一些问题,其中第一个是'ddMONyyyy'd 的db2 日期格式,它会导致shell 命令提前终止。如果我能解决这个问题,我认为它应该可以工作。
我可以将宏变量传递给 AIX (SAS) 服务器,而无需执行 db2 命令所需的额外“ ”集。
有什么想法吗?