问题标签 [sas-iml]

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

sas-iml - 如何在 SAS/IML 中矢量化?

假设我有

我有兴趣为 x 的每个元素计算 CDF ('F',1,2, ....)。当然,我可以写一个循环,但我想知道这样做的聪明方法,即矢量化?

我试图谷歌但找不到任何东西,任何接受者?

0 投票
1 回答
440 浏览

matrix - 在用户定义的模块中按列名访问矩阵列

在 IML 过程中,我有一个带有命名列的矩阵。

我可以轻松地按名称访问和打印列。但是,当我将矩阵传递给用户定义的模块时,模块内的列名会消失(要运行模块,请取消注释先前 proc iml 中的行)

我收到以下错误:

如何通过名称访问模块中的矩阵列?

按列号访问会使代码不灵活。可能的解决方法可能是将列名向量作为参数传递并在模块内运行 mattrib。但是,mattrib 的重复很麻烦,在这种情况下,我需要从 myMatrix 中提取 colnames,因为它是由一段很长的代码定义的(不像示例中那样),并且名称向量不可用。

提前致谢,

亚历克斯

解决了

感谢您的解决方案。

0 投票
1 回答
289 浏览

list - SAS IML 对象列表

在 SAS IML 中,我想将可变数量的数字和字符类型以及不同维度的 matices 传递给用户定义的模块。这可以通过例如创建对象列表并将列表传递给模块来实现。例如,在 R 中,这种数据类型仅称为“列表”。类似的功能在 matlab 中作为单元列表实现,在 C++ 和 Java 中通过从抽象类继承来实现。不幸的是,在 SAS IML 文档中找不到这个。

如何在 SAS IML 中创建任意对象列表?

非常感谢。

亚历克斯


瑞克,谢谢你的快速回复。

具有可选参数的想法长期受到限制,因为我需要传递 2 个或更多参数,而不是 15 个或更少。

然而,第二个想法启发了我另一种解决方法。

在调用函数之前,我有矩阵名称列表

在一个循环中,我将根据名称创建临时数据集,然后将名称传递给函数。在函数内部,我将可以访问所有数据集。调用该函数后,我将循环删除它们。

希望这不会在计算上很昂贵,否则将不得不求助于您的一个想法。

谢谢

0 投票
2 回答
176 浏览

matrix - 将 3 个变量转换为矩阵形式以在 SAS 中创建热图

我正在尝试将 3 个变量转换为矩阵,例如,如果您有以下情况:

(CHAR) (char) (数字)

变量 1 变量 2 变量 3

AB 1

光盘 2

英孚 3

公元 4

自动对焦 5

CB 6

CF 7

EB 8

编 9

关于如何将上述三个变量转换为下面这种形式的矩阵的任何想法,我的目标是使用这个 matix 构建一个热图

一个 1 4 5

C 6 2 7

8 9 3

任何人都可以使用 SAS/IML 或其他程序帮助我在 SAS 中执行此操作吗?谢谢!

0 投票
1 回答
395 浏览

macros - SAS IML 在循环中使用带有宏(symget)的 Mattrib

在 IML 过程中,我有几个矩阵和几个带有列名的向量:

要将列名分配给矩阵中的列,可以复制粘贴 mattrib 语句足够多次:

但是,在我的情况下,矩阵的数量是在执行时定义的,因此需要一个 do 循环。以下代码

但是在第一个 symget 上产生“期望名称”错误。

类似的问题Loop over names in SAS-IML? 使用 symget 提供宏解决方法,这里会产生错误。

将 mattrib 与 symget 一起使用的正确方法是什么?除了宏,还有其他方法可以从字符串中生成变量吗?

任何帮助,将不胜感激。

谢谢,亚历克斯


编辑1

问题出在symget函数中。&符号解析宏变量中包含的矩阵的名称,symget返回宏的名称。

结果是

有任何想法吗?


编辑2

函数解决EDIT1中的symget问题

mattrib问题但仍然存在


解决了

谢谢 Rick,你让我看到了 CALL EXECUTE() 语句。

0 投票
1 回答
479 浏览

macros - SAS IML 传递对宏中定义的变量的引用

在 SAS/IML 中,我尝试将对宏中定义的变量的引用传递给用户定义的模块。模块更改变量值。由于函数的调用在 do-loop 我不能使用&-sign。但是,使用symget不起作用。这是我的代码。

输出显示变量mydata1没有改变:

有任何想法吗?


解决了

非常感谢!

0 投票
1 回答
117 浏览

macros - SAS IML 在左侧使用 symget

在 SAS/IML 中,如果只有带有名称的宏可用,是否可以更改变量?在左侧使用 symget 会产生错误:

&-sign有效,但代码在 do-loop 中并且必须使用symget 。

问题源于编写一个函数的任务,该函数接受可变数量的参数并在几个 do-loop 中处理它们。它与以下问题有关:

SAS IML 在循环中使用带有宏(symget)的 Mattrib

SAS IML 传递对宏中定义的变量的引用

在 SAS-IML 中循环名称?

在其他语言(R、C++、Java、Matlab 等)中,任务是在抽象的帮助下解决的。

想法?


解决了

非常感谢。有用的文章。

0 投票
2 回答
314 浏览

sas - SAS PROC iml 无法声明

我在 proc iml 中很新。sooo......我无法声明和创建变量。在编码行中,声明显示为红色。如果我运行它,就像'语句无效或使用顺序不正确'

谢谢您的帮助

0 投票
1 回答
361 浏览

sas - SAS中的黑森州?

有没有办法在 SAS 的 proc 逻辑中获取 Hessian 矩阵?或者哪个选项可以计算它从 proc 逻辑的出发?

我一直在阅读函数文档,但看不到有办法将它包含在输出表中。

0 投票
2 回答
555 浏览

sas - 如何使用 SAS Proc IML 选择 5 个最小值?

我想知道是否可以使用 IML 按行选择 5 个最小值或最大值?

这是我的代码:

所以我想获得一个矩阵测试,其中包含第 1 列的最大最小值,然后第 2 列包含我的行的最小值,除了第 1 值等...

如果你有任何想法!:) 事件,如果它不使用 IML(但使用 SAS:base,sql..)

例如:

我想获得按行排序的结果:

为了在另一个表中选择我的 5 个最小值: