全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1992 5
2012-04-13
因为工作中很多涉及到了年龄分组的计算,我自己写了一个希望以后用起来方便一点,但是在其中宏参数设置中出现了点问题,就是我希望 do i=&min to &max by &h,1;中的1也能用宏参数表示(有时候小年龄分组要细化一下,不是5岁一组),但是
如果这样写的话,不需要小年龄组细分的时候就出问题了,那个逗号去不掉,运行不了,希望大家能帮助我一下,PS:我初学,程序写的不好,也希望指出,也多多学习,谢谢


%macro ageid(max,h,data,min=0,f=);
data a;
do i=&min to &max by &h,&f;
output;
end;
run;
proc sort data=a;
by i;
run;
data a;
set a end=last;
j=lag(i);
if last then i=1000;
if i=&min then delete;
run;
data _null_;
set a end=last;
call symput("qian"||left(trim(_n_)),j);
call symput("hou"||left(trim(_n_)),i);
if last then call symput("num",_n_);
run;
%put _user_;
%do i=1 %to #
data age;
set &data;
if &&qian&num<=age<&&hou&num then ageid="&&qian&num.-";
run;
%end;
%mend;
二维码

扫码加我 拉你入群

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

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

全部回复
2012-4-16 09:26:12
自己顶一个
二维码

扫码加我 拉你入群

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

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

2012-4-16 09:26:52
data age;
set &data;
if &&qian&num<=age<&&hou&num then ageid="&&qian&num.-";
run;

这部分写错了,应该是
data age;
set &data;
if &&qian&i<=age<&&hou&i then ageid="&&qian&i.-";
run;
二维码

扫码加我 拉你入群

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

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

2012-4-16 09:29:01
应该是
data &data;
set &data;
if &&qian&i<=age<&&hou&i then ageid="&&qian&i.-";
run;
二维码

扫码加我 拉你入群

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

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

2012-4-16 16:57:02
关注中
二维码

扫码加我 拉你入群

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

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

2012-4-16 20:37:56
学习
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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