楼主: gaokaji16
1277 2

[问答] 求助关于data过程步内的宏变量引用 [推广有奖]

  • 1关注
  • 0粉丝

大专生

41%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
437 点
帖子
29
精华
0
在线时间
51 小时
注册时间
2010-4-24
最后登录
2020-6-11

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
本人刚学sas,对data过程步始终不是很理解
有一组数据,想用data过程步进行数据修改,原始数据举例如下:
1 1 a
2 1 b
3 1 a
4 1 a
5 1 a
6 1 b
7 1 a
8 1 b
9 1 a
我像达到的效果是,修改第二列数字,修改规则是:从上向下第三列每出现一个b,第二列就加1,预期目标举例:
1 1 a
2 2 b
3 2 a
4 2 a
5 2 a
6 3 b
7 3 a
8 4 b
9 4 a
试验过下面代码(其中r2,r3分别为第二列和第三列的变量名),不成功:
%global r;
%let r=1;
%macro new;
data temp;
set temp;
r2=&r;
if r3='b' then do;
%let r=%eval(&r+1);
r2=&r;
end;
run;
%mend new;
%new;
失败数据举例如下:
1 1 a
2 2 b
3 1 a
4 1 a
5 1 a
6 2 b
7 1 a
8 2 b
9 1 a
求教各位高手,如何达到我想要的结果,不胜感激,在线等!
二维码

扫码加我 拉你入群

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

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

关键词:Data Global Macro lobal Temp

沙发
yuerqieqie 发表于 2013-8-28 20:31:01 |只看作者 |坛友微信交流群
不需要宏变量,普通data step就可以了
data result;
    set temp;
    retain cnt_b;
    if _n_ = 1 then cnt_b = r2;
    if r3 = 'b' then cnt_b + 1;
     r2 = cnt_b;
    drop cnt_b;
run;

使用道具

藤椅
gaokaji16 发表于 2013-8-28 21:11:12 |只看作者 |坛友微信交流群
yuerqieqie 发表于 2013-8-28 20:31
不需要宏变量,普通data step就可以了
data result;
    set temp;
原来这样就可以,多多感谢!!!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-25 08:57