SAS/IML 发表评论(0) 编辑词条
简介编辑本段回目录
SAS/IML是SAS提供的一个可以进行矩阵运算编程的工具,详细使用请参见有关资料或系统帮助(Help | Extended Help | SAS System Help: Main Menu | Help for SAS Products | SAS/IML)。
它可以用来进行交互的矩阵运算,也可以编好一个程序再一起运行。程序可以使用分支、循环、模块化子程序等控制结构。数据步中的函数大都能在SAS/IML中使用,SAS/IML 也提供了一些特有的函数。SAS/IML的一个方便之处是它可以直接读取SAS的数据集并把结果写成SAS数据集,它也有存取外部文件的功能。
进入iml编辑本段回目录
要交互运行SAS/IML,只要在程序窗口输入
proc iml;
reset print;
提交此程序,就可以进入交互的SAS/IML运算状态。退出用QUIT语句。
矩阵输入编辑本段回目录
SAS/IML中可以使用标量、行向量、列变量和矩阵,可以使用字符型数据。变量取名规则遵循SAS语言的统一规定,变量可以存储标量、向量和矩阵。
在iml中输入矩阵可以通过直接输入,赋值语句输入,利用函数创建矩阵(BLOCK, I ,J ,DO,DESIGNF ,SHAPE等 ) ,将SAS数据集转换为矩阵等方法。
例如:
sc = 15.25;
vh = {1 2};
vh1=5:9;
vv = {3, 4};
mat1 = {1 2 3,
4 5 6};
mat2 = {"Li" "Ming",
"Zhang" "Chong"};
矩阵运算编辑本段回目录
用||表示矩阵左右连接,用//表示矩阵上下连接。x`表示x的转置。
SAS/IML中可以进行通常的矩阵加减乘(+、-、*)运算,也可以进行对应元素之间的乘除(#、/)运算。矩阵加减必须两个矩阵大小完全相等,或者其中一个是标量。矩阵乘法要求第一矩阵的列数等于第二矩阵的行数,或其中一个是标量。矩阵元素之间的乘除运算是对应元素进行乘除,当两个矩阵大小完全相同时可以进行运算,其中有一个是标量时可以进行运算,另外,如果其中有一个是行(列)向量而其长度与另一个矩阵的列数(行数)相同也可以进行运算。矩阵逆要用INV()函数运算。
矩阵混合运算优先级编辑本段回目录
1:括号里的先运算
2:高的优先级的先运算
3:相同优先级左边先计算,例外:
一级,右边先计算
比较运算符a
矩阵下标运用编辑本段回目录
下标的一般形式:Operand[row,column]
Operand:矩阵或者表达式
Row:矩阵的行数,可以是表达式,也可以是标量或者向量
Column:矩阵的列数,可以是表达式,也可以是标量或者向量
用途:
选择矩阵的一个元素,一行或者一列,子阵,简化矩阵的一行或列
对行,列的计算
下面是下标的一些应用
/*下标的运用,挑选元素*/
proc iml;
a={1 2 3,4 5 6,7 8 9};
b=a[2,1];
c=a[2,];
d=a[,1];
e=a[{2 3},{1}];
f=a[1:3,1:2];
a[2,1]=0;
print a b c d e f ;
proc iml;
A={0 10 2,5 4 30,7 6 8};
print A;
B=A[{2 3},+]; /* 矩阵A第2,3行求和 */
Print a b;
B=A[+,<>]; /* 列和的最大值 */
Print a b;
B=A[<>, +]; /* 列最大值和 */
Print a b;
B=A[, ><][+,]; /* 行最小值和 */
Print a b;
B=A[, <>][+,]; /* 行最大值和 */
Print a b;
B=A[, <:>]; /* 行最大值位置指标 */
Print a b;
B=A[, >:<]; /* 行最小值位置指标 */
Print a b;
B=A[<:>,]; /* 列最大值位置指标 */
Print a b;
B=A[>:<,]; /* 列最小值位置指标 */
Print a b;
B=A[:]; /* 所有元素均值 */
Print a b;
Run;
缺失值的处理编辑本段回目录
运算符 缺失值处理方式
+ 0
# 1
## 0
<> 负无穷
>< 正无穷
<:> 1
>:< 1
: 缺失
附件列表
→如果您认为本词条还有待完善,请 编辑词条
词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
4
标签: IML:矩阵运算
同义词: 暂无同义词
关于本词条的评论 (共0条)发表评论>>