问题标签 [sas-hash]

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

sas - 将哈希对象作为 FCMP 参数传递

proc fcmp函数允许将哈希对象作为参数传递。文档有点含糊,它没有提到此功能是否仅限于来自其他fcmp函数的调用,或者是否也允许来自数据步骤调用。

我试图在数据步骤中定义一个哈希,然后通过引用一个fcmp函数来传递该哈希。然而,当我尝试下面的代码时,它给了我:NOTE: Invalid type conversion而且我不确定我哪里出错了(或者这是否可能)。

我试图这样做的原因是因为我希望最终有几个函数可以将同一个哈希表作为参数传递给它们。

0 投票
2 回答
254 浏览

sas - 动态定义一个 SAS 哈希

所以这就是问题所在。

我有一个数据集,对于每条记录,根据条件,我想加载不同的哈希。我不知道我将在运行时加载的每个哈希的确切哈希结构。所以我希望能够definedata有条件地执行该语句。但是由于不知道hash结构,所以想到了definedata通过变量将参数传递给语句,但是还是不行。我怎样才能做到这一点?这是我到目前为止所拥有的:

我得到的错误是:ERROR: Undeclared data symbol 'a', 'b' for hash object。我认为这里的问题是,defineddata 方法会一一解析变量,最终将整个字符串'a', 'b'视为一个变量。

如果我将散列定义为所有可能变量的超集,那么当我加载包含这些变量子集的数据集时,它就会报错。此外,我不能将散列定义为包含所有变量的超集(即,我不能创建所有散列来包含 a、b、x 和 y 并遗漏无关元素)。

所以我的问题是我怎样才能完成我在这里尝试做的事情?是否可以仅使用 datastep 构造逐个提供每个变量来进行宏 %do 之类的迭代?还是有其他方法可以做到这一点?

约束

  1. 我不能依赖宏处理,因为我只知道在运行时要使用哪个哈希。
  2. 由于内存原因,我无法提前加载所有定义。

任何帮助将不胜感激。

0 投票
1 回答
26 浏览

sas - SAS 哈希对象跟踪 ID 随时间变化的历史/关系

我有截至今天的 ID 和 ID 更改的历史记录。我想知道 ID 最近的 ID 是什么,以及在某些指定的历史截止日期与之关联的所有 ID;并计算 ID 更改的次数。

以下代码为“Want”数据集生成结果,但随着时间的推移它不正确。

数据集 Want 如下所示:

作为 原始ID 当前 ID 变化计数
2010 年 3 月 15 日 12 11 2
2010 年 3 月 15 日 4 2 3
2010 年 7 月 2 日 12 11 2
2010 年 7 月 2 日 4 3 2
2010 年 7 月 15 日 12 11 2
2010 年 7 月 15 日 4 4 1
2010 年 8 月 15 日 12 . 0
2010 年 8 月 15 日 4 . 0
. 12 10 2
. 4 1 3
. 12 10 2
. 4 1 3
. 12 10 2
. 4 1 3

我想要数据集想要看起来像这样:

作为 原始ID 当前 ID 变化计数
2010 年 3 月 15 日 4 2 1
2010 年 3 月 15 日 12 11 1
2010 年 7 月 2 日 4 3 2
2010 年 7 月 2 日 12 11 1
2010 年 7 月 15 日 4 4 3
2010 年 7 月 15 日 12 11 1
2010 年 8 月 15 日 4 4 3
2010 年 8 月 15 日 12 12 2
0 投票
1 回答
48 浏览

hash - Look-up within same data and multiple variables with SAS hash

I have a dataset as can be generated with Below code.

I am looking for a way to look up values of VarA in VarB in such a way so that we can create grouping of those records and then do some conditional processing to get a dataset generated with the code below.

have: For the first 3 records, XX in VarB has a corresponding record in VarA having VarB as 'YY'. Consecutively, 'YY' in VarB has a corresponding record in VarA having 'PP' as VarB.

Want: First occurrence of the group of first 3 records, which is 'XX' as VarC and last Occurrence of group which is 'PP' as VarD.

Please post in comments if need further clarification.

Thank you!