SAS中文论坛

标题: 关于iml里的一个问题 [打印本页]

作者: shiyiming    时间: 2008-3-1 15:14
标题: 关于iml里的一个问题
大家好,我是个sas的初学者
最近在聚类时,需要对矩阵等进行操作
遇到的问题是:
我想针对矩阵中的元素进行运算,假设把矩阵中大于某个数的元素全都转换成1,不知道这个在sas中如何实现呢?
先谢谢了~
作者: shiyiming    时间: 2008-3-7 15:50
标题: Re: 关于iml里的一个问题
最简单的方法, 比如大于5的matrix的元素赋与 1.

proc iml;
x = {6 7,
  8 2};
do i = 1 to nrow(x);
        do j = 1 to ncol(x);
                if x[i,j] > 5 then
                        x[i,j] = 1;               
        end;
end;
print x;

hope that helps
作者: shiyiming    时间: 2008-3-20 10:43
标题: Re: 关于iml里的一个问题
可以使用LOC函数
用LOC返还大于某个数的元素在矩阵中的index,然后再把对应的元素设成1

[code:1o25c6rd]proc iml;
x={5 -1 0, 6 2 9};
x[LOC(x>3)]=1;
create test from x;
append from x;
quit;[/code:1o25c6rd]




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2