全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6173 8
2010-04-09
有一组数是这样的:
code name n
   1      aa    0
   1              1
   1              2
   1      cc    0
   1              1
   2      bb    0
   2              1
   2              2
我想处理成这样子的:
code name n
   1      aa    0
   1      aa    1
   1      aa    2
   1      cc    0
   1      cc    1
   2      bb    0
   2      bb    1
   2      bb    2
就是相当于采用函数name=lag&n(name)来处理,这个怎么操作啊?
谢谢大家!!!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-4-9 16:00:38
复制代码
希望是对的
二维码

扫码加我 拉你入群

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

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

2010-4-9 16:35:13
2# soporaeternus

谢谢哈,这种思路不错,应该能够解决我的问题。但是我想知道怎么样运用n那个变量,就像我前面说的lag&n()函数,让n的数能够取变量n的值,不知道我说清楚了没?
二维码

扫码加我 拉你入群

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

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

2010-4-9 22:14:23
data crackman;
missing m;
input code name$ n;
cards;
1  aa 0
1  m  1
1  m  2
1  cc 0
1  m  1
2  bb 0
2  m  1
2  m  2
;
run;
data crackman(drop=name1 name2);
set crackman;
name1=lag(name);
name2=lag2(name);
if n=1 then name=name1;
if n=2 then name=name2;
run;
二维码

扫码加我 拉你入群

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

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

2010-4-9 22:39:48
proc sql;
select max(n) as n into:n from crackman where name='m';
quit;
%crackman;
%macro crackman;
data crackman4;
set crackman;
%do i=1 %to &n.;
name&i.=lag&i.(name);
if n=&i. then name=name&i.;
drop name&i.;
%end;
run;
%mend crackman;
二维码

扫码加我 拉你入群

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

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

2010-4-10 20:38:08
5# crackman

是啊是啊,就是在等待宏呢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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