问题标签 [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.

0 投票
1 回答
1088 浏览

sas - 如何在 SAS 中动态删除和导入数据集?

我有四个逗号分隔的文件:mar2009.txt、mar2010.txt、mar2011.txt 和 mar2012.txt

我正在尝试清理我的库并动态导入这些数据集:

0 投票
5 回答
37497 浏览

sas - 是否可以循环遍历 SAS 数据集?

我有 60 个 sas 数据集,其中包含有关消费者个人特征的数据,例如 id, gender, age, amountSpent, ....每个数据集仅显示一个时间段的数据(数据 1 是 1 月,数据 2 是 2 月......)。由于大小和其他一些问题,我无法合并它们。

如何编写多个循环来遍历每个数据集,进行一些操作并将估计值保存到临时文件中。

SAS 没有for循环。我该如何使用do

0 投票
3 回答
1341 浏览

macros - 在 SAS 中自动扫描和搜索表/对象名称

好的,我将从问题开始:我每周都会创建产品表,其名称格式为:

我正在尝试自动化一些活动分析,这样我就不必每周手动更改代码中的表名称来使用在我的活动最大结束日期之后的第一个产品表。

例如

我六月的产品表是:

在这种情况下,我想使用列表中的第二个表,忽略超过 12 个月的产品表,只选择日期在我的 max_enddate 宏之后的表。

我整天都在谷歌搜索,我很困惑,所以任何建议都会非常感激。

谢谢!

0 投票
2 回答
338 浏览

sas - 从 SAS PROC IML 中的循环内部的变量生成文件名

我正在尝试将数据文件分解为小文件,其中一个变量作为这些文件名称的一部分。具体来说,我有一堆人口普查区,以及其他变量。我正在将它们读入矩阵,执行一些操作,现在想将数据导出循环并将其保存为外部数据文件,其中人口普查作为名称的一部分;当我进入下一个区域时,必须在不中断循环或退出 IML 的情况下完成此操作:

我尝试了 symput 函数,但它需要在 IML 中使用 data null,这会破坏流程。

0 投票
2 回答
192 浏览

sql - 优化使用宏构建 SAS 表

我有一个 SAS 程序,它使用如下宏动态构建表:

这是我的代码的简化版本。%Advance_Years宏观基本推进1年&current_year宏观&previous_year。如您所见,此表每年获取 1 个变量。问题是该表的行数可以达到数十万,而且我已经看到执行时间猛增,达到数小时才能完成。

我试过option compress=yes了,它有助于减少执行时间,但不是很多。我已经尝试了大多数 SAS 提示和技巧来加快执行速度,但同样,差别不大。我在 32b 上运行 Base SAS 9.2。

我认为我对变量添加技术的看法是错误的。我在每个循环上覆盖我的表这一事实是否会影响执行效率?如果是的话,我怎么能把它改写成最有效的代码呢?请记住,我不能“转置”表格而只能添加更多行。提前致谢!

0 投票
2 回答
662 浏览

loops - SAS 宏循环不解决

谁能告诉我为什么这不能解决:

我不完全确定为什么,但是由于弄乱了一些变量,我认为问题在于它试图将表名分配给 t_&i 宏的最后一部分。我认为问题在于在尝试调用另一个宏变量时尝试命名宏变量(尝试在 i=0 时通过调用 &i 创建宏 t_0)。我想我把语法搞砸了,因为我认为逻辑相当合理。

谢谢!

0 投票
1 回答
188 浏览

date - SAS日期的宏变量

在这里快速提问。

我如何调整此代码以便它可以使用 %let DTD=2012-12-31;

那么 dd 的值为 19723。提前致谢!

0 投票
1 回答
194 浏览

sql - SAS 宏变量来表示 Proc SQL 中 IN 语句中的内容

我有一个查询,我想在 Proc SQL 中通过 SAS 运行,我从我们公司的一个数据库中获取数据。在查询的顶部,为了方便使用,我希望能够放置一个输入变量列表。我对仅在某些日期和某些州获取数据感兴趣。我关心的日期是连续的,所以我只为开始日期和结束日期创建一个 SAS 宏变量,并使用 between 语句。这很容易。但是,对于美国来说,我不能做这样的事情。所以,我的想法是做类似的事情

然后稍后,我想做一个 where 语句

现在,这行不通。而且,我尝试了其他几种变体,但我似乎无法让它发挥作用。这样的事情可能吗?

0 投票
2 回答
8509 浏览

sas - 使用 SAS 中的宏变量自动执行开始日期

背景: 我有一个代码,它从当前日历季度开始,但从一年前开始提取交易数据。例如,如果我今天(2013 年 8 月 16 日)运行代码,它将必须提取 2012 年 7 月 1 日以后的所有数据。

问题: 我想使用宏变量自动执行数据提取的开始日期。

到目前为止,我被困在这里:

最后的宏变量输出我想要的日期,但格式不被 SAS 识别。

我将不胜感激任何帮助。提前谢谢了!

0 投票
4 回答
9549 浏览

sas - 使用 sql 单引号值创建宏变量

我在 SAS 中使用宏来循环特定库中的数据表。我将元数据信息放在 data null 步骤中,并与 where 语句和我的宏变量进行比较。

我的 SQL 步骤如下所示:

某些值code包含“45.10”和“G0102”等值,因此不能强制转换为数字。宏包含以下行:

但是当使用“quote”函数双引号时,十进制值会产生问题。

我可以用单引号分隔值吗?

编辑:问题是由于 filter_codes 宏在调用执行步骤中运行(在一系列数据集上)并且在双引号内的宏变量中解析的双引号将结束调用执行。