楼主: huyiustc
3557 13

【100币悬赏】一个SAS查询问题 [推广有奖]

11
wang1839 在职认证  发表于 2016-9-22 09:57:43 |只看作者 |坛友微信交流群
data a;
input id a b;
cards;
1  1.1   2
2  1.2   4
3  1.3   4
4  1.0   1
;
run;

proc sort data=a;
        by descending a ;
run;



data temp;
        set a end=eof;
        lag1=lag(b);lag2=lag2(b);
        if not eof then do;
        pt=_n_+1;
        set a(rename=(b=next1) keep=b) point=pt;
        end;
run;


data temp1;
        set temp end=eof;
        if not eof then do;
        pt=_n_+1;
        set temp(rename=(next1=next2) keep=next1) point=pt;
        end;
run;


data final;
        set temp1 end=eof;
        if _n_=1 then  c=mean(next1,next2);
        else if eof then c=mean(lag1,lag2);
        else c=mean(lag1,next1);
        keep id a b c;
run;


proc sort data=final;
        by id;
run;

使用道具

12
ahazzh 发表于 2016-11-16 12:56:46 |只看作者 |坛友微信交流群
data try;
input id a b;
cards;
1 1.1 2
2 1.2 4
3 1.3 4
4 1.0 1
;
run;
proc sort data = try out = a;
        by a;
run;
data a;
n = _N_;
set a;
run;
data b;
set a;
do i = 1 to nobs;
   set a( keep = b rename=( b = nb))nobs = nobs point = i ;
  output;
end;
run;
data c;
set b;
m = _N_;
run;
proc sql ;
create table m as
select a.id,a,b,c
from a join (select distinct n , id ,mean(nb) as c
        from(select * from c
        where( n=1 and (m = 2 or m = 3))or ((n >1 and n<4)and (m = 5*n-5 or m = 5*n -3)) or (n =4 and(m = 14 or m =15)))as d
        group by n)as n   
on a.n = n.n
order by id;
quit;
已有 1 人评分论坛币 热心指数 收起 理由
admin_kefu + 20 + 2 热心帮助其他会员

总评分: 论坛币 + 20  热心指数 + 2   查看全部评分

使用道具

13
gongtian 发表于 2016-11-17 09:09:47 来自手机 |只看作者 |坛友微信交流群
huyiustc 发表于 2016-9-13 16:50
如题:
原始数据集含 ID A B三个变量
id   a     b
666

使用道具

14
zhouhaijun6 发表于 2016-11-17 09:23:06 |只看作者 |坛友微信交流群

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 08:52