全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2609 5
2012-02-20
大家好,请教关于SAS选择观测的问题:
比如有下列一个数据集,
name  age
jim      12
lucy     15
lily       14
kim      16
lucy      13
kuku     17
coco      15
nina       16
jim       15
lucy      18
hebe    12
在变量name中,隔一段观测有一个相同的观测lucy,但是之间间隔不同,我想把lucy之间的观测输出成数据集,即
lily       14
kim      16 是一个数据集,
kuku     17
coco      15
nina       16
jim       15是一个数据集,以此类推,希望高手指教!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-2-20 11:34:02
data a;
input name $  age;
cards;

      jim      12
      lucy     15
      lily       14
      kim      16
      lucy      13
      kuku     17
      coco      15
      nina       16
      jim       15
      lucy      18
      hebe    12
;
data b;
set a;
id=_n_;
run;

proc sql noprint;
select count(1) into: num
from b
where name='lucy';

select id into: d1-:d%left(&num)
from b
where name='lucy';
quit;

%put _user_;

%macro one;
%do i =1 %to %eval(&num-1);
%let j=%left(%eval(&i+1));
%put &&d&i. &&d&j. ;
data a&i.;
set b;
where id between &&d&i. and &&d&j. and name ne 'lucy';
run;
%end;
%mend;
%one
二维码

扫码加我 拉你入群

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

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

2012-2-20 12:46:32
非常感谢!!很有帮助!
二维码

扫码加我 拉你入群

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

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

2012-3-3 20:50:29
顶楼主,我也需要
二维码

扫码加我 拉你入群

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

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

2012-3-4 01:36:44
感觉LS有点冗余,就写了个,输出估计还需改进。
data a;
input name $  age;
retain lucy_num;
if name='lucy' then do;
lucy_num+1;
end;
if name^='lucy' then output;
call symput('num',lucy_num);
cards;

      jim      12
      lucy     15
      lily       14
      kim      16
      lucy      13
      kuku     17
      coco      15
      nina       16
      jim       15
      lucy      18
      hebe    12
;
run;


%macro one;
%do i=1 %to #
        data b&i;
    set a;
    if lucy_num=&i;
    run;
%end;
%mend;

%one;




二维码

扫码加我 拉你入群

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

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

2012-3-4 02:20:04
jjtww 发表于 2012-3-4 01:36
感觉LS有点冗余,就写了个,输出估计还需改进。
data a;
input name $  age;
不错,很好!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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