问题标签 [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 投票
2 回答
714 浏览

sas - 刷新 PDV 变量

是否有命令或快速方法将 PDV 中的所有现有变量设置为缺失?

我有一些像这样运行的代码:

一旦到达第一个“输出”语句,我想将所有 PDV 变量重置为缺失(例如 var2='';var3='';),但不必手动声明它们。任何人都可以帮忙吗?

0 投票
1 回答
2373 浏览

sas - SAS 错误消息(致命:在 MISSING smear 生成期间检测到代码生成错误)

有谁知道这个错误信息是什么意思?

FATAL:在 MISSING 涂片生成期间检测到代码生成错误。

它在连接大约 40 个数据集时发生。我相信这可能是由于有太多变量(大约 217)而达到了内存限制,但最好能确认这一点......

(日志文件)

0 投票
2 回答
19825 浏览

variables - 通过数据步骤连接 SAS 变量

我正在寻找一种在执行数据步骤时创建包含数据集某些值的字符串变量的方法。

示例数据集 work.test:

所以最后,变量看起来像:OneTwoFour(甚至更好的 FourTwoOne)。这看起来很简单,但我似乎找不到办法做到这一点。我还尝试使用这样的宏变量:

但这给出了:

所以我只得到最后一个值。我知道这一定是因为我对这个宏工具有一些误解,但我不明白为什么变量中只有最后一个值。我以为只有最后一次调用 symput 才实际执行了它或其他什么,但是当我将代码调整为:

然后我确实得到了它们:

所以我最后的猜测是,通过数据步骤,'call symput...' 行实际上被添加到宏处理器中,其中 "&stringvar" 已经被替换,并且只有在最后的语句之后它们才会全部执行。
这是一个很好的假设还是有其他解释?回到最初的问题:有没有一种简单的方法可以实现这一点(具有所需的变量)?

0 投票
2 回答
4045 浏览

loops - SAS:返回之前在 SAS 数据步骤中的观察可能吗?

我也在 RunSubmit 上问过这个问题,因为 SAS 问答社区似乎有点分散。如果这不受欢迎,请告诉我。

是否有可能在数据步骤中返回到先前/确定的观察并从那里进一步通过数据集?

为了在仍然不清楚的情况下添加问题,一个小例子:

数据集'work.test':

数据步骤:

*问题是关于返回到 obs 的部分,其中 number = 1,而不是关于 [and first time],只是添加了它,因此它不会生成无限循环。*

附加信息:
由于似乎仍然不是 100% 清楚我想要做什么,我在原始样本数据集和示例中添加了一些内容。请记住,它应该有点通用,而不是固定代码。以后情况可能会有所不同。但主要问题只是:“当你在 obs=Y 时,是否有可能回到 obs=X 并从那里去?如何?”

背景信息:这适合使用包含 xml 流的单个表创建 xml 输出的整个故事,其中一些元素需要重复。不,由于旧 SAS 版本,无法使用 XML 映射。不,ODS 也不适用于这种情况。顺便说一句,这只是背景信息,因为“我仍然不知道你想做什么”的评论不断出现;)

不适用于我的需要的可能性列表:

  • REWIND 函数(仅返回第一次观察)
  • LAG 函数(获取变量的先前值,而不是返回 obs)
  • 使用多个 SET 语句:这不是我需要的通用方式(即,一些数据集需要 2 个循环,其他数据集需要 5 个循环,因此 5 个嵌套的 SET 语句......)

什么可以工作:

  • 使用完整的 SCL 代码执行数据步骤(推迟)
  • SET 语句中的 POINT 选项(当前试用)
  • 哈希表:仍然需要做更多的研究,因为我对此或如何实现知之甚少。
0 投票
2 回答
1386 浏览

hash - SAS 散列连接形式为 LIKE 或 =:

是否可以对部分子字符串进行 SAS 哈希查找?

所以哈希表键将包含:'LongString' 但我的目标表键有:'LongStr'

(目标表键字符串长度可能不同)

0 投票
2 回答
1248 浏览

sas - 选择 SAS 中的特定行

我有来自单个患者的多次记录的以下数据。

我想提取第 1 天有记录的患者;如果第 1 天和第 2 天都可用,第 1 天第 2 天和第 3 天都可用。并通过其他。任何 sas 帮助。

0 投票
2 回答
2509 浏览

sas - SAS DATA:如何删除只出现一次的观察结果

在 SAS 中,假设我有一个名为“person_groups”的数据集。它有两个变量,名为“person”和“group”。该数据集只是将每个人分配到一个组。

我怎样才能从这个数据集中删除所有在他们的组中没有其他人的人?换句话说,我怎样才能删除所有单例组?

[我会很高兴有一个proc sql解决方案或一个data step解决方案——这都很好。]

旁注:我是 SAS 新手。多年来我一直在使用 C++ 和 MATLAB。我觉得我无法理解如何使用 SAS DATA 步骤做任何事情。它看起来非常笨重、怪异和不雅。坦率地说,我越来越沮丧。外面的人对疲倦的人有希望吗?:)

0 投票
1 回答
651 浏览

sas - SAS 数据步数计算图中的节点/边

假设我有一个名为 的数据集中表示的有links图,它有两个变量:from_idto_id。我想使用 SAS Data Step 做两件事:(1)计算节点数,(2)计算边数。

假设links数据集如下所示。

在此示例中,有 3 个节点和 4 条边。(我们可以假设 中没有重复的边links)。节点是 1、2 和 3。边是 1->2、2->3、3->1 和 3->2。

下面是一个 SAS 宏,它使用 SAS Data Step 和 proc sql 来计算节点和边。它工作得很好,但我希望使用 SAS Data Step 以便(可能)更快地计算节点和边。

0 投票
3 回答
566 浏览

sas - 如果在数据步骤中这意味着什么?

在这个数据步骤中,我不明白做什么if last.y......你能告诉我吗?

0 投票
1 回答
13396 浏览

sas - SAS数据步骤/ proc sql使用自动增量主键从另一个表中插入行

我有2个数据集如下

另一个数据集

如何将第二个表中的所有行插入到第一个表中?情况是第一个表是永久性的。第二张表每月更新一次,所以我想将每月更新表中的所有行添加到永久表中,这样它看起来像这样

我面临的问题是我无法从数据集 1 中增加 id。据我搜索,SAS 中的数据集没有自动增量属性。自动增量可以通过使用数据步骤来完成,但我不知道数据步骤是否可以用于像这样的 2 个表的情况。通常的sql是

但由于 sas 数据集不支持自动增量列,因此我面临的问题。我可以在上面的proc sql之后使用SAS数据步骤来解决它

这会增加 id 列的值,但代码有点丑,而且 id 是主键,在其他表中用作外键,所以我不想弄乱旧行的 id .

我正在学习和使用 SAS,因此非常感谢您的帮助。提前致谢。

额外问题:如果第二张表没有新列,有没有办法用数据步骤完成我想要的(从月度表(2nd)到永久表(1st)添加新行)?目前,我使用这个丑陋的 proc sql/data 步骤来创建新列