原始数据集含 ID A B三个变量
id a b
1 1.1 2
2 1.2 4
3 1.3 4
4 1.0 1
要给每个ID生成一个新变量C,生成原则是,与该ID对应变量a 最接近的两个观测的b的平均
比如 与ID 1的a最接近的是ID 2 和 ID4 那么ID1对应的c=(4+1)/2=2.5由此生成的数据集为
ID A B C
1 1.1 2 2.5
2 1.2 4 3
3 1.3 4 3
4 1.0 1 3
请问各位大侠这个SAScode如何写

|
楼主: huyiustc
|
4133
13
【100币悬赏】一个SAS查询问题 |
|
已卖:1100份资源 教授 35%
-
|
回帖推荐try this:
data test;
input id a b;
cards;
1 1.1 2
2 1.2 4
3 1.3 4
4 1.0 1
;
data step1;
set test;
do i=1 to nobs;
set test1(drop=id rename=(a=a1 b=b1)) nobs=nobs point=i;
val=abs(a-a1);
if a ne a1 then output;
end;
run;
proc sort data=step1;
by id val;
run;
data step2;
set step1;
by id val;
if first.id then n=0;
n+1;
if n
data aaa;
input id a b;
cards;
1 1.1 2
2 1.2 4
3 1.3 4
4 1.0 1
;
run;
/*数据集拼接*/
proc sql;
create table aaa_new as
select* from aaa,aaa(rename=(id = id1 a = a1 b = b1));
quit;
/*删除ID相同的观测,并求差值*/
data aaa_new;
set aaa_new;
if id = id1 then delete;
diff = abs(a-a1);
run;
/*排序,为后续做准备*/
proc sort data = aaa_new;
by id diff;
run;
/*让 ...
| ||
|
我是御皇香案吏,谪居犹住在瀛洲
|
|||
|
|
| ||
| ||||||||||||||
| ||||||||||||||
| ||
加好友,备注cda京ICP备16021002号-2 京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明


