全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5538 6
2011-12-02
我想在SAS中产生一系列的随机数,具体来说:对应id为1 ,产生1个随机数,对应id为2,产生2随机数,以此类推,一直到id=99时,产生99个随机数。但是我目前写的程序,每个id均只能产生一个随机数(也就是数据库里只有99条记录,但是我想得到1+2+3+...+99共4950条记录),不知道怎么实现。我写的程序如下:%macro datas;data s;%do id= 1 %to 99;ran=(248-((&id-1)*2))+(24.8-((&id-1)*0.2))*rannor(&id);output;%end;run;%mend datas;%datas;
问题补充: 另外,为什么这段程序运行出来只有一个变量(即ran这个变量),没有id这个变量啊? 如果不是宏程序,为什么就会产生id和ran两个变量呢?先谢谢啦!

二维码

扫码加我 拉你入群

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

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

全部回复
2011-12-2 12:21:51
You don't need any macro programming in this simple case. See example below.

data t1;
   do id=1 to 10;
      output;
   end;
run;

data t2;
  set t1;
  do i=1 to id;
     ran=ranuni(1);
         output;
  end;
run;
二维码

扫码加我 拉你入群

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

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

2011-12-2 12:34:04
谢谢。关键是我这段程序里的随机数服从的分布的参数也会随着id变化,这种情况下是不是也不需要宏程序,也有更简单的写法么?(比如我上面的程序,每一个id对应的这些随机数,都服从正态分布,但是正态分布的参数随id变化)。
我是菜鸟,见笑了。
二维码

扫码加我 拉你入群

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

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

2011-12-2 15:23:10
宏程序里的id是用来做循环的宏变量,当然不会保存到数据集里了
二维码

扫码加我 拉你入群

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

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

2011-12-2 15:50:36
嗯嗯,明白了。问题已解决,谢谢二位。
二维码

扫码加我 拉你入群

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

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

2012-1-5 12:41:06
二楼的程序简单改一下就可以了吧
%macro randge(obs);
data t1;
   do id=1 to &obs;
      output;
   end;
run;
data t2;
  set t1;
  do i=1 to id;
     ran=ranuni(1);
         output;
  end;
run;
%mend randge;
%randge(100);
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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