sas-macro相关内容

SAS循环遍历宏内的变量列表(每次读取一个)

我需要对宏内的变量列表进行循环. 列表是按以下方式创建的(我已经用 MO、nu 或 KA 开始了我想要的变量名称): proc sql noprint;选择名称到 :varsi 中,以 ' ' 分隔来自dictionary.columns其中 libname eq 'LABIMP' 和 memname eq 'MUESTRA1'和(NAME LIKE 'MO_%' OR NAME LIKE ..
发布时间:2022-01-08 18:00:10 其他开发

用于多个数据集的 SAS 宏

我是 SAS 新手.我在一个文件夹中有 12 个(每月数据)数据集.数据集的名称是: 201401201402201403...201411201412 每个数据包含 10 个变量.所有数据的变量名称都相同.我只想要 10 个变量中的 3 个变量,并通过 new_201401 等重命名数据. 我正在使用 Keep Var1 Var2 Var3; 手动尝试它,但有没有简单的方法或宏让我们可 ..
发布时间:2022-01-08 17:57:26 其他开发

如何在没有特殊字符的情况下将字符串传递给宏 sas

我在 sas 中写了这个宏来获取一些文件的一些信息: %macro info_1(cmd);文件名 dirList 管道 &cmd.;数据work.dirList;infile dirList 长度=reclen;输入文件 $variing200.重新考虑;权限=扫描(文件,1,“");如果输入(扫描(文件,2,“"),8.)= 1;用户=扫描(文件,3,“");组=扫描(文件,4,“");fi ..
发布时间:2022-01-08 17:45:36 其他开发

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

好的,我将从问题开始:我每周都会创建产品表,其命名格式为: products_20130701产品_20130708... 我正在尝试自动执行一些广告系列分析,这样我就不必每周手动更改代码中的表名称来使用我的广告系列最长结束日期之后的第一个产品表. 例如 %put &max_enddate.;/*20130603*/ 我 6 月份的产品表是: products_20130602*产 ..
发布时间:2022-01-08 17:44:43 其他开发

从单个数据集创建多个 SAS 宏变量列表

由于宏变量值的长度不能超过 (65534) 的最大长度,因此我无法为所有观察结果创建单个宏变量.我想创建一个宏来遍历我的数据集以生成几个 numeric 列表,我可以将这些列表传递给 proc sql 中的 where 语句. 而不是这个: *proc sql noprint;选择 ID 到 :ParaList 中,用 ',' 分隔来自 work.ID_LIST(**firstobs=1 ..
发布时间:2022-01-08 17:42:44 其他开发

SAS - 使用另一列的值动态创建列名

我有一列包含许多从 XML 解析器解析的标志.数据如下所示: USERKEYED=Y;VALMATCH=N;DEVICEVERIFIED=N;EXCEPTION=N;USERREGISTRD=N;ASSOCIATE=Y;EXTERNAL=N;GROSSGIVEN=Y;UMAPPED=N; 我必须创建一个包含所有这些列名的表来捕获标志.喜欢: USERKEYED VALMATCH 设备验证异常 ..
发布时间:2022-01-08 17:41:08 其他开发

如何循环n次逻辑回归?

我在 SAS 上获得了一段预测消费者行为的代码.到目前为止,我手动做了 50 个样本和 50 个逻辑回归,但我想自动化这个过程.步骤如下: 创建一个表,所有客户端的值为“1" 创建一个表,所有客户端的值为“0" (下面的代码从这里开始)启动一个循环: 从客户那里获取价值“1"的 3000 人样本 从客户那里获取价值“0"的 3000 人样本 加入这两个表 应该作为输出的逻辑回归( ..
发布时间:2022-01-08 17:34:24 其他开发

用于在 proc sql 中解析为语句的 SAS 宏

谁能帮我解决这里的语法错误.Y 是包含一些值的数据集,比如说 1,2,3,4(实际上它包含许多记录) /*这工作正常*/过程 sql;select count(*) into:m from y;从 y 中选择 x 到:a1 - :a4;退出;%put &m &a1 &a2 &a3 &a4;/*当我试图创建一个具有 a1 到 a4 值的宏时,它给了我错误.以下是我的方法*/过程 sql;selec ..
发布时间:2022-01-08 17:31:57 其他开发

在导出文件期间检测到打开代码语句递归

我尝试在 SAS 中导出文件,但我得到“检测到打开代码语句递归".错误.由于我根据日期导出多个文件,因此我根据提示日期定义为宏变量,因此我想将我的文件命名为使用此变量导出,但它不起作用.如果有人帮助我,我将不胜感激. rep_date = 30APR2015:00:00:00输出文件 = work.A042015.sas7%let var = CATS("A",MONTH(DATEPART(&r ..
发布时间:2022-01-08 17:29:02 其他开发

为什么 %str(%inner_macro()) 中的 %str 不起作用?

%str 应该将字符串作为一个参数传递给 sas 宏,即使它包含逗号,但如果 %str 的参数本身是宏的结果,这显然不起作用?我得到 ERROR: More positional parameters found than defined. 示例 这就是错误的意思 15 %macro outer_macro(left, right);16 %put 注意:outer_macro: ..
发布时间:2022-01-08 17:27:32 其他开发

在SAS中单独解析标题行

我有输入文件,其中第一行有标题信息.(制表符分隔的数据值).在这些值中,有一个整数值指定应如何解析文件的其余部分.如果该值小于阈值,则应以一种方式解析文件,否则如果该值大于阈值,则应以不同方式解析数据. %let isNew = Undefined;数据头;infile "&infile" OBS=1;INPUT 代理 $Status $ Num $ fdate sdate;如果 fdate ..
发布时间:2022-01-08 17:27:10 其他开发

SAS 宏变量更改

一般来说,在宏内部需要修改宏变量的情况,我们如何处理;例如,假设我有这个宏: %macro test (arg=);数组arrayone [&arg];/* 还行吧 */array arraytwo [&arg+1]/* 这不行.如何让它发挥作用?*/... 当我想要 %test(3) 时,我们如何管理这些情况,然后arraytwo 需要采用维度 4...? 解决方案 改成 数组 ..
发布时间:2022-01-08 17:25:13 其他开发

do循环中的SAS if语句

您好,我正在尝试使用 do 循环和 if 语句编写宏函数.我想我搞砸了 if-then do 和 do 循环,我无法找出问题所在.我有一张儿童信息表,其中包含年龄、性别、运动、乐器等列. 我的原始代码如下所示: 数据旧;设置新的;如果运动在 ("football","basketball") 并且年龄 我有一堆要编辑类型和名称的乐器.我想写一个循环来自动完成,但我不确定为什么下面的代码 ..
发布时间:2022-01-08 17:24:31 其他开发

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

我在 SAS 中使用宏来循环特定库中的数据表.我将元数据信息放在 data null 步骤中,并与 where 语句和我的宏变量进行比较. 我的 SQL 步骤如下所示: proc sql;从程序中选择quote(trim(code))到:procedures中,用','分隔;退出; code 的某些值包含“45.10"和“G0102"等值,因此不能强制转换为数字.宏包含以下行: %ma ..
发布时间:2022-01-08 17:24:25 其他开发

纵向数据中不替换的随机抽样

我的数据是纵向的. 访问 ID VAR11 001 ...1 002 ...1 003 ...1 004 ......2001 ...2 002 ...2003 ...2 004 ... 我们的最终目标是在每次访问中选出 10% 的人进行测试.我尝试使用 proc SURVEYSELECT 来执行 SRS 而无需替换并使用“VISIT"作为分层.但是最终的样本会有重复的 ID.例如,可以在 V ..
发布时间:2022-01-08 17:23:45 其他开发

SAS 数据步骤视图和数据包装在宏 for 循环中

对于一个大学研究项目,我通过 SAS 从 WRDS 检索数据,并且对 SAS 比较陌生.我正在尝试以 WRDS 提供的特定间隔检索数据,这实际上对我非常有用;结构如下 [1]定义一些宏变量[2]使用数据步骤视图[3]对数据进行操作[4]将数据导出为csv 特别是我正在检索每一年的股票数据.不是一直更改变量,而是允许我提供年份作为输入的宏将是“最优雅"的解决方案(灵感来自这里:[SAS Loop ..
发布时间:2022-01-08 17:16:21 其他开发

SAS宏如果然后条件比较变量与数值

我有一个包含多条路径的数据集,最后一个变量是人们遵循该路径的频率. 数据路径;输入路径1 路径2 路径3 路径4 路径5 路径6 频率;牌;2 5 3 6 7 2 4654 3 2 3 0 0 203942 1 3 6 5 0 3091 3 2 6 5 3 3022 2 5 4 7 7 6783;跑; 我想计算每条路径从前一站到后一站的频率,以计算它们各自的频率.因为有7个站点.会有49种组合 ..
发布时间:2022-01-08 17:13:00 其他开发

SAS宏,将值作为字符串传递给where子句

我下面有一个 SAS 宏不起作用 --- 此代码段不返回任何值,因为 where 语句不起作用.有人有想法么?我尝试添加 %str,但也没有用. %macro 茶点(beverage_type=);过程 sql;选择*其中drink_type = '&beverage_type.';退出;%修补%刷新(雪碧); 谢谢. 解决方案 宏变量不会用单引号解析.您还缺少 FROM 子句,并且宏 ..
发布时间:2022-01-08 17:11:29 其他开发

SAS 宏编码

我不明白我的 SAS 代码中发生了什么.代码的行为符合预期,但仅在第一次编译时,即名为“SummaryTable"的表显示代码触发 %mylogreg 和 %ModelsSummary 的 3 次迭代中的每一次的正确“LogLik"值.但是,如果我重新运行代码,那么它的行为会有所不同,3 次迭代的“LogLik"值是相同的,并且等于最后一次迭代的值.因此,在第一次编译代码时,变量“MyLogLik ..
发布时间:2022-01-08 17:08:45 其他开发