楼主: 依媚
13040 14

[求助]如何把SAS数据集作为矩阵进行运算? [推广有奖]

  • 0关注
  • 0粉丝

学前班

50%

还不是VIP/贵宾

-

威望
0
论坛币
44 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
77 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2008-8-24
最后登录
2009-2-13

楼主
依媚 发表于 2008-8-24 11:05:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我想对已有的数据集进行矩阵定义,然后用IML模块直接进行矩阵运算。但是不知道该如何把SAS数据集当作矩阵直接进行运算?请高手指点。谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:sas数据集 数据集 高手指点 矩阵定义 矩阵运算 矩阵 SAS 运算 数据集

回帖推荐

realgod5417 发表于2楼  查看完整内容

proc iml;use data.work;/*你要用的在临时库的data数据集*/read all into mx;/*读取data数据集为mx矩阵*/...........quit; 

本帖被以下文库推荐

沙发
realgod5417 发表于 2008-8-24 15:18:00

proc iml;

use data.work;/*你要用的在临时库的data数据集*/

read all into mx;/*读取data数据集为mx矩阵*/

...........

quit;

 

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

梅须逊雪三分白雪却输梅一段香

藤椅
依媚 发表于 2008-8-25 11:14:00
万分感激!

板凳
hxin3 发表于 2008-8-25 13:59:00
good!

报纸
peter 发表于 2011-3-18 21:39:11
realgod5417 发表于 2008-8-24 15:18
proc iml;use data.work;/*你要用的在临时库的data数据集*/read all into mx;/*读取data数据集为mx矩阵*/...........quit;
有个新问题我想请教。

我想生成130X130的单位阵,用的下列命令:
proc IML;
data peter.temp;
I130=I(130);


但是sas提示出错了,说不存在I这个函数。

1    proc IML;
NOTE: IML Ready
NOTE: Exiting IML.
NOTE: PROCEDURE IML used (Total process time):
      real time           0.09 seconds
      cpu time            0.03 seconds


2    data peter.temp;
3    b=I(130);
       -
       68
ERROR 68-185: The function I is unknown, or cannot be accessed.


可以我看IML的手册和little sas的书上都说有I(dimension)这个函数的。请问问题在哪里?
下面是IML手册上的对I函数的解释和例子:
The I Function
The I function creates an identity matrix of a given size. It has the following general form:
I( dimension );
where dimension gives the number of rows. For example, the following statement
creates a 3 × 3 identity matrix:
> I3=I(3);
I3 3 rows 3 cols (numeric)
1 0 0
0 1 0
0 0 1


我的系统是XP,sas为9.2

地板
ntsean 发表于 2011-3-18 21:53:27
IML里面不能用data step
你得在IML运算好了,再存回 data set

7
peter 发表于 2011-3-18 21:58:45
更郁闷的是,我连求反函数的INV()函数都不能用,sas同样提示说没这个函数。是不是我什么东西没打开啊?

8
ntsean 发表于 2011-3-18 22:58:29
在IML里面你不能直接用data step,如果你要把矩阵存为data set,你可以

proc IML;
I130=I(130);
create a from I130;
append from I130;
quit;
proc print data=a;run;

9
peter 发表于 2011-3-21 12:27:22
ntsean 发表于 2011-3-18 22:58
在IML里面你不能直接用data step,如果你要把矩阵存为data set,你可以

proc IML;
I130=I(130);
create a from I130;
append from I130;
quit;
proc print data=a;run;
谢谢您的回复!我现在有遇到问题了,请您帮助解答。
我想计算leontif拟矩阵,其计算公式为L=inv(E-A);E是单位阵,就是下面的I130,A是中间消耗矩阵,其值在work.test中
下面是用的命令:

proc iml;
I130=I(130);
create a from I130;
append from I130;
quit;
proc print data=E;
run;

proc iml;
use work.test;   
read all into A;
quit;

proc iml;
b=E-A;


但是到最后一步出错了,请问是怎么回事,下面是出错的信息:
474  proc iml;
NOTE: IML Ready
475  b=E-A;
ERROR: (execution) Matrix has not been set to a value.

operation : - at line 475 column 4
operands  : E, A

E      0 row       0 col     (type ?, size 0)


A      0 row       0 col     (type ?, size 0)


statement : ASSIGN at line 475 column 1

10
ntsean 发表于 2011-3-21 20:02:40
你前面退出iml了,E和A就没了
在用iml,要重新建立E和A

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 17:17