楼主: 柳如清风
2087 3

[问答] IML 如何在矩阵中新生成n列 [推广有奖]

  • 0关注
  • 1粉丝

大专生

15%

还不是VIP/贵宾

-

威望
0
论坛币
15 个
通用积分
0
学术水平
2 点
热心指数
1 点
信用等级
0 点
经验
404 点
帖子
32
精华
0
在线时间
47 小时
注册时间
2012-3-7
最后登录
2021-3-24

楼主
柳如清风 发表于 2012-7-5 11:33:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
初学IML,想在矩阵中产生新的一列,用来计算第一列与第二列对应元素的差,如果原矩阵中不存在第三列直接计算,
会报错 ERROR: (execution) Invalid subscript or subscript out of range. 我用x3=0新建了一列可以解决,以下是程序:
  1. data a;
  2. input x1 x2;
  3. cards;
  4. 1 2
  5. 9 5
  6. 5 6
  7. 6 8
  8. ;
  9. /*不先生成x3会报错*/
  10. data a;
  11. set a;
  12. x3=0;
  13. run;
  14. /*****************/
  15. proc iml;
  16. use work.a;
  17. read all into b;
  18. reset print;
  19. b[,3]=b[,1]-b[,2];
  20. quit;
复制代码

但是由于需要计算得出的列比较多,每列都用类似于x3=0的先声明太麻烦,有没有简单的办法能让矩阵产生新的一列,或者生成新的一个矩阵用于计算也行(比如生成一个m*n的零矩阵)?
先谢过了!!!
二维码

扫码加我 拉你入群

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

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

关键词:EXECUTION invalid script scrip RESET 矩阵 execution ERROR 如何

沙发
ziyenano 发表于 2012-7-5 17:41:11
b=b||(b[,1]-b[,2]);

藤椅
bobguy 发表于 2012-7-6 09:51:09
Do it simply as,

    data a;
    input x1 x2;
    cards;
    1 2
    9 5
    5 6
    6 8
    ;
    /*不先生成x3会报错*/
    data a;
    set a;
    run;
    /*****************/
    proc iml;
    use work.a;
    read all into b;
    *reset print;
    *b[,3]=b[,1]-b[,2];

        x3=b[ ,+];
        print b x3;
    quit;

板凳
柳如清风 发表于 2012-7-6 13:59:41
bobguy 发表于 2012-7-6 09:51
Do it simply as,

    data a;
  原来x3=b[ ,+];可以,谢谢LS      

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-7 17:38