问题标签 [datastep]

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 回答
52 浏览

sas - 运行 SAS 代码时出错

运行以下代码时出现错误。&CNTis50并且其中&vars包含列名。

每列作为一些值从1100。我想选择每一列并检查以下标准(%if语句),创建一个新变量并为其分配值(如free,partially freenot free)。

这是我得到的输出:

0 投票
1 回答
5185 浏览

sql - 数据步中的字符长度与 proc sql

是否有可能使用 SAS proc sql 创建表会截断 255 个字符的字符变量?它与库引擎类型有关吗?

我正在使用这样的 PCFILES libname(注意 dbmax_text 选项):

然后我做一个这样的proc sql:

var2即使它的格式列$4000.在列属性视图中,也会在 255 处被截断。当我将其作为数据步骤执行时,所有字符数据都来自:

我的宏库中嵌入了 40-50 个这样的 sql 过程,因此我不希望重构所有宏以使用数据步骤(如果可能的话)。有没有人知道

a) 如果 proc sql 中有一些选项可以使其尊重 dbmax_text。

或者

b)有关SAS如何处理proc sql的create table语句中的字符长度的任何文档?

编辑 - 添加一些屏幕截图。

SAS 认为变量的长度为 4000 个字符:

显示 4000 长度和格式的 sas 列属性

0 投票
2 回答
1325 浏览

input - 从带有双尾 @@ 的输入中读取

输入:

期望的输出:

这就是我想出的:

确实有效,但由于我们一直在讨论课堂上的双尾 @@,我想我应该使用它。这是我的另一种方法:

它会产生一个错误,说明使用missover@@不一致的方式。我究竟做错了什么?

0 投票
2 回答
152 浏览

sas - 将 Proc Sql 存在查询转换为数据步骤

我当前的代码中有这个 proc sql 查询。不幸的是,我正在处理超过 1000 万条记录,因此需要数小时才能运行。我一直在尝试将其转换为数据步骤,认为它会运行得更快。但是,我似乎无法获得相同的数据结果。如果有人可以帮助我完成数据步骤,我将不胜感激。或者,如果您对如何使 proc sql 更有效地运行有任何建议。

这是我的 proc sql 查询:

这是我尝试将其转换为的数据步骤:

0 投票
1 回答
1207 浏览

excel - 通过数据步骤发送时导出的 xlsx 文件损坏

我已导出 sas-dataset,使用 WinSCP 复制到我的计算机并成功打开它。

但是,当我使用数据步骤发送文件时,文件已损坏。我在 Outlook 中单击该文件,Excel 显示“Microsoft Excel 无法打开或修复该工作簿,因为它已损坏”。

我该怎么做才能使用数据步骤电子邮件打开文件。

我的代码:

0 投票
1 回答
186 浏览

sas - 数据步骤中的 SAS 将长数据重塑为具有分类变量的宽数据

在 SAS 中,我拥有的数据集如下。

ID 是给每个人的,A 是一个分类变量,它取 1、2 或 3。我想通过每个人的一次观察来获取数据,将 A 分成三个指标变量,比如 A1、A2 和 A3。

结果将如下所示:

有没有人想过如何在数据步骤中做到这一点,而不是在 sql 中?提前致谢。

0 投票
1 回答
362 浏览

sas - 在 SAS 中,是否可以在同一数据步骤中声明 2 个哈希表?

我可以像这样声明 1 个哈希表:

但是当我这样声明 2 时:

我得到:

错误:第 194 行第 3 列散列对象的未声明数据符号 stateList。
错误:DATA STEP 组件对象失败。在执行阶段中止。

我想知道是否甚至可以同时声明 2 个哈希表(或更多,我需要 3 个)。
如果答案是,我做错了什么?

我在任何地方都找不到这样的例子。

谢谢!

0 投票
1 回答
175 浏览

sas - 使用变量作为宏变量数据步骤

我正在寻找一种在数据步骤中使用普通变量值作为宏变量的方法。

例如,我有宏变量 &statesList_Syphilis = AAA
和另一个宏变量 &statesList_Giardia = BBB

在数据步骤中,我有一个变量Germ ,其中包含 2 行:“Syphilis”和“Giardia”。

在我的数据步骤中,当 Germ="Syphilis" 迭代第一行时,我需要找到AAA
, 而当 Germ="Giardia" 迭代第二行时,我需要找到BBB

尝试看起来像这样

我不认为这是可能的,但我想我会问只是为了确定。

谢谢!


编辑(根据评论中的问题,我正在为我的具体问题添加上下文,但我觉得这让事情变得更加复杂):

这是一种简化问题的尝试。

实际上AAABBB是一长串单词,例如

而且我不想将这个长字符串存储在变量中,我想在 do 循环中迭代这个字符串的每个单词,例如:


EDIT2:
这是我的问题的更完整视图:


EDIT3:
输入数据集如下所示

输出数据集将添加包含在由依赖于 Germ 的宏变量定义的字符串中的变量。

例如对于 V_HBV,它将创建以下变量:无症状_1 暴发性_1 慢性_1 慢性_1 致命暴发_1 肝细胞_1 补偿_1 肝细胞_2 失代偿_1 致命肝细胞_1 致命肝细胞_2 致命去补偿_1

0 投票
1 回答
75 浏览

sql - sas 为数据步骤中的每个实例执行一个宏

我有一个宏,可以在一组给定的时间范围内将数据插入表中。

它遍历一系列从到日期(存储在数据集中)并使用 proc sql insert 语句运行宏。

在所有这一切结束时检查数据时,我注意到只有最终从到期的数据在新数据集中。

这是我在数据步骤中调用宏时的代码。

我应该在数据步骤中调用其他什么来使其工作并为每个从到时间段插入数据(运行宏),而不仅仅是最后一个?

0 投票
2 回答
42 浏览

date - 在数据步骤中使用字符日期字符串作为日期

我有以下两个宏变量:

我想创建一个数据集,它是这些(包括)之间的一系列日期。我无法更改宏变量的输入格式&start_date&end_date.

我已经尝试了以下的许多变体,但 SAS 为每一个都吐出一个错误:

对此的任何帮助将不胜感激