全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1414 2
2013-08-28
本人刚学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
求教各位高手,如何达到我想要的结果,不胜感激,在线等!
二维码

扫码加我 拉你入群

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

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

全部回复
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;
二维码

扫码加我 拉你入群

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

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

2013-8-28 21:11:12
yuerqieqie 发表于 2013-8-28 20:31
不需要宏变量,普通data step就可以了
data result;
    set temp;
原来这样就可以,多多感谢!!!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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