SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 846|回复: 2
打印 上一主题 下一主题

关于iml里的一个问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-3-1 15:14:49 | 只看该作者

关于iml里的一个问题

大家好,我是个sas的初学者
最近在聚类时,需要对矩阵等进行操作
遇到的问题是:
我想针对矩阵中的元素进行运算,假设把矩阵中大于某个数的元素全都转换成1,不知道这个在sas中如何实现呢?
先谢谢了~
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-3-7 15:50:39 | 只看该作者

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
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-3-20 10:43:48 | 只看该作者

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]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 20:10 , Processed in 0.068939 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表