请教SAS高手一个数据步的问题(Do循环),谢谢啦!

我想在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两个变量呢?

data s;
do id=1 to 99;
do j=1 to id;
ran=(248-((j-1)*2))+(24.8-((j-1)*0.2))*rannor(j);
output;
end;
end;
run;
再套一个循环就好了,
宏程序的循环里面,id是作为宏变量~所以不会显示在数据集里面。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-02
谢谢!问题补充:不行啊 即使用scanf函数也是不行的 打断点发现程序到scanf一步是不会往下执行了 如果程序已经输出C值,那没有理由不输出是否继续?这
相似回答