问题标签 [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.
sas-iml - 如何在 SAS/IML 中矢量化?
假设我有
我有兴趣为 x 的每个元素计算 CDF ('F',1,2, ....)。当然,我可以写一个循环,但我想知道这样做的聪明方法,即矢量化?
我试图谷歌但找不到任何东西,任何接受者?
matrix - 在用户定义的模块中按列名访问矩阵列
在 IML 过程中,我有一个带有命名列的矩阵。
我可以轻松地按名称访问和打印列。但是,当我将矩阵传递给用户定义的模块时,模块内的列名会消失(要运行模块,请取消注释先前 proc iml 中的行)
我收到以下错误:
如何通过名称访问模块中的矩阵列?
按列号访问会使代码不灵活。可能的解决方法可能是将列名向量作为参数传递并在模块内运行 mattrib。但是,mattrib 的重复很麻烦,在这种情况下,我需要从 myMatrix 中提取 colnames,因为它是由一段很长的代码定义的(不像示例中那样),并且名称向量不可用。
提前致谢,
亚历克斯
解决了
感谢您的解决方案。
list - SAS IML 对象列表
在 SAS IML 中,我想将可变数量的数字和字符类型以及不同维度的 matices 传递给用户定义的模块。这可以通过例如创建对象列表并将列表传递给模块来实现。例如,在 R 中,这种数据类型仅称为“列表”。类似的功能在 matlab 中作为单元列表实现,在 C++ 和 Java 中通过从抽象类继承来实现。不幸的是,在 SAS IML 文档中找不到这个。
如何在 SAS IML 中创建任意对象列表?
非常感谢。
亚历克斯
瑞克,谢谢你的快速回复。
具有可选参数的想法长期受到限制,因为我需要传递 2 个或更多参数,而不是 15 个或更少。
然而,第二个想法启发了我另一种解决方法。
在调用函数之前,我有矩阵名称列表
在一个循环中,我将根据名称创建临时数据集,然后将名称传递给函数。在函数内部,我将可以访问所有数据集。调用该函数后,我将循环删除它们。
希望这不会在计算上很昂贵,否则将不得不求助于您的一个想法。
谢谢
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 中执行此操作吗?谢谢!
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() 语句。
macros - SAS IML 传递对宏中定义的变量的引用
在 SAS/IML 中,我尝试将对宏中定义的变量的引用传递给用户定义的模块。模块更改变量值。由于函数的调用在 do-loop 我不能使用&-sign。但是,使用symget不起作用。这是我的代码。
输出显示变量mydata1没有改变:
有任何想法吗?
解决了
非常感谢!
macros - SAS IML 在左侧使用 symget
在 SAS/IML 中,如果只有带有名称的宏可用,是否可以更改变量?在左侧使用 symget 会产生错误:
&-sign有效,但代码在 do-loop 中并且必须使用symget 。
问题源于编写一个函数的任务,该函数接受可变数量的参数并在几个 do-loop 中处理它们。它与以下问题有关:
SAS IML 在循环中使用带有宏(symget)的 Mattrib
在其他语言(R、C++、Java、Matlab 等)中,任务是在抽象的帮助下解决的。
想法?
解决了
非常感谢。有用的文章。
sas - SAS PROC iml 无法声明
我在 proc iml 中很新。sooo......我无法声明和创建变量。在编码行中,声明显示为红色。如果我运行它,就像'语句无效或使用顺序不正确'
谢谢您的帮助
sas - SAS中的黑森州?
有没有办法在 SAS 的 proc 逻辑中获取 Hessian 矩阵?或者哪个选项可以计算它从 proc 逻辑的出发?
我一直在阅读函数文档,但看不到有办法将它包含在输出表中。
sas - 如何使用 SAS Proc IML 选择 5 个最小值?
我想知道是否可以使用 IML 按行选择 5 个最小值或最大值?
这是我的代码:
所以我想获得一个矩阵测试,其中包含第 1 列的最大最小值,然后第 2 列包含我的行的最小值,除了第 1 值等...
如果你有任何想法!:) 事件,如果它不使用 IML(但使用 SAS:base,sql..)
例如:
我想获得按行排序的结果:
为了在另一个表中选择我的 5 个最小值: