全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1237 8
2015-07-20

我想编写个含有参数的宏,产生简单随机抽样号码,程序如下:

%macro dsrs(N,n);
data a;
do i=1 to N;
OUTPUT;
END;
RUN;/*产生含有N个数据的数据库*/
PROC SURVEYSELECT DATA=A METHOD=srs samplesize=n out=B;
RUN;/*从数据库A中按简单随机抽样抽取n个数据*/
proc print data=B;run;
%mend dsrs
%ssrs(100,10)


但我不知道怎么搞定那两个参数,求指点
二维码

扫码加我 拉你入群

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

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

全部回复
2015-7-20 21:38:41
刚才有些语法错误

%macro dsrs(N,n);
data a;
do i=1 to N;
OUTPUT;
END;
RUN;/*产生含有N个数据的数据库*/
PROC SURVEYSELECT DATA=A METHOD=srs sampsize=n out=B;
RUN;/*从数据库A中按简单随机抽样抽取n个数据*/
proc print data=B;run;
%mend dsrs;
%dsrs(100,10);
二维码

扫码加我 拉你入群

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

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

2015-7-20 21:50:16
do i=1 to &N;而且最好把变量名换成A,B。而不是N,n.因为sas的变量名是不区分大小写的
二维码

扫码加我 拉你入群

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

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

2015-7-20 22:05:01
不是吧258123 发表于 2015-7-20 21:50
do i=1 to &N;而且最好把变量名换成A,B。而不是N,n.因为sas的变量名是不区分大小写的
太感谢了,用我调试成功的程序报答您吧

%macro dsrs(x,y);
data a;
do i=1 to &x;
OUTPUT;
END;
RUN;/*产生含有x个数据的数据库*/
PROC SURVEYSELECT DATA=A METHOD=srs sampsize=&y out=B;
RUN;/*从数据库A中按简单随机抽样抽取y个数据*/
proc print data=B;run;
%mend dsrs;
%dsrs(100,10);
二维码

扫码加我 拉你入群

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

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

2015-7-20 22:23:47
不是吧258123 发表于 2015-7-20 21:50
do i=1 to &N;而且最好把变量名换成A,B。而不是N,n.因为sas的变量名是不区分大小写的
不过这里的变量名用什么貌似都无所谓的,就算一样的也没关系,认位置呢
二维码

扫码加我 拉你入群

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

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

2015-7-21 09:20:13
ihsihs 发表于 2015-7-20 22:23
不过这里的变量名用什么貌似都无所谓的,就算一样的也没关系,认位置呢
认位置是因为你用的
%macro dsrs(n,N);
这样的形式为Positional Parameters,所以你能感觉到,它是认位置的
还有种形式是
%macro dsrs(n=,N=);
这个是Keyword Parameters,它认的是Keyword,位置可以是任意顺序
%dsrs(n=100,N=10)这样的话,就会出现楼上说的情况,应该是run不出来的
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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