全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1707 2
2009-04-02

能否用sas程序,模拟这些行列表2*2,2*3,2*4,2*5,3*4,3*5,4*5。

对任一个表来说都要保证总合计是5。或者 对任一个表来说都要保证每个行合计是5?

请大家帮我写个程序,谢谢了。愿意以5个论坛币换取。

二维码

扫码加我 拉你入群

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

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

全部回复
2009-4-3 01:32:00

假设取0-5 的整数,如果选任意数,程序需要稍微改一下

%macro matrix(row = , col = );
proc iml;
  a = J(&row, &col, 0) ;
  sum = {0};
  do i =1 to &row;
    do j = 1 to &col;
      a[i,j] = int(6*ranuni(-1));
      sum[1,1] = sum[1,1] + a[i,j];
      do until (sum[1,1] <= 5 );/* if great than 5, then regenerate number*/
        sum[1,1] = sum[1,1] - a[i,j];
        a[i,j] = int(6*ranuni(-1));
        sum[1,1] = sum[1,1] + a[i,j];
      end;
     end;
    end;
  a[&row,&col] = 5-sum[1,1];

/* print matrix */
  print a;
 
quit;
%mend;

/* 2 by 2 */
%matrix(row=2,col = 2);

/* For other Matrices*/
%macro OtherMatrix();
  %do i = 2 %to 4;
    %let j = %eval(&i +1);
    %matrix(row=&i, col = &j);
  %end;
%mend;

%OtherMatrix();

[此贴子已经被作者于2009-4-3 7:36:12编辑过]

二维码

扫码加我 拉你入群

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

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

2009-4-13 09:30:00
谢谢,我试试
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群