全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5665 10
2011-05-19
想请教论坛朋友怎样拿出所有“haha” 观测和“haha”观测的上一个和下一个观测(备注:如果“haha" 出现在第一个或最后一个观测怎么办)? 比如:

obs    name
1        5
2        7
3        haha
4        0
5        
6        6
7        4
8        3
9        haha
...        ...
二维码

扫码加我 拉你入群

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

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

全部回复
2011-5-19 15:54:21
data _null_;
set a;
where name="haha";
call symput("obs",obs);
run;
%let obs1=%eval(&obs-1);
%let obs2=%=%eval(&obs+1);
data b;
set a;
where obs in(&obs1,&obs,&obs2);
run;
二维码

扫码加我 拉你入群

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

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

2011-5-19 16:14:16
但是有几百个"haha" 2# wb8686
二维码

扫码加我 拉你入群

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

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

2011-5-20 13:58:11
复制代码
二维码

扫码加我 拉你入群

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

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

2011-5-20 14:03:23
自连吧,obs_no +1或者-1等于 haha 的obs_no......
二维码

扫码加我 拉你入群

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

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

2011-5-20 16:16:51
data a;
input obs    name$;
cards;
1        5
2        7
3        haha
4        0
5        
6        6
7        4
8        3
9        haha
10        1
11        23
12         23
13       haha
14        14
;
run;
proc  sql;
select count(*) into:nbr_haha from a
where name="haha";
select obs into:obs1-:obs%left(&nbr_haha) from a
where name="haha";
quit;
%put &nbr_haha &obs2;
%macro a;
data b;
%do i=1 %to &nbr_haha;
set a;
where obs in(%eval(&&obs&i-1),&&obs&i,%eval(&&obs&i+1));
output;
%end;
run;
%mend;
%a
proc sort data=b;
by obs;
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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