楼主: previal
2656 5

[原创博文] SAS 选择相同观测之间的观测 [推广有奖]

  • 1关注
  • 1粉丝

硕士生

46%

还不是VIP/贵宾

-

威望
0
论坛币
22 个
通用积分
0
学术水平
5 点
热心指数
6 点
信用等级
3 点
经验
645 点
帖子
93
精华
0
在线时间
138 小时
注册时间
2010-5-24
最后登录
2015-7-7

楼主
previal 发表于 2012-2-20 09:59:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好,请教关于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是一个数据集,以此类推,希望高手指教!
二维码

扫码加我 拉你入群

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

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

关键词:name COCO Hebe Luc 数据集

沙发
yunqingwang 在职认证  发表于 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
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
Actree + 1 + 1 + 1 对论坛有贡献
previal + 1 + 1 + 1 好的意见建议

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

藤椅
previal 发表于 2012-2-20 12:46:32
非常感谢!!很有帮助!
I believe I can fly,and I can touch the sky!

板凳
chendonghui1987 发表于 2012-3-3 20:50:29
顶楼主,我也需要

报纸
jjtww 发表于 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;




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

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 12:12