全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1971 5
2009-06-17
大虾们帮帮忙啊。
有两个spreadsheet, 第一个里面是样本, 第二个里面是comparables.
比如:
sheet 1
姓名 班级 体重 出生年份
小明 一班 100   1990
小红 二班 120   1989
小强 一班  180   1990


sheet 2
姓名 班级 体重 出生年份
小刚 一班 200   1990
小一 一班 190    1990
小二 一班 120   1990
小三 二班  110   1990
小四 一班 110    1990
小五 二班 130   1989

根据sheet 1从sheet 2里面挑样本,挑出同班、同年出生且同重量级(+/-20)的同学,比如输出结果如下:
姓名 班级 体重 出生年份
小明 一班 100   1990
小二 一班 120   1990
小四 一班 110    1990

小红 二班 120   1989
小五 二班 130   1989

小强 一班  180   1990
小刚 一班 200   1990
小一 一班 190    1990

跪求帮助!!!!!
二维码

扫码加我 拉你入群

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

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

全部回复
2009-6-17 05:16:55
将第一个数据集的体重重新命名(RENAME)X1, 第二个数据集的体重重新命名为X2. 将两个数据集按同班和同出生年月连接(用MERGE指令), 删除X1和X2大于20的即可. 或只保留X1和X2差值小于20的即可.
二维码

扫码加我 拉你入群

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

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

2009-6-17 06:31:21
2# llulla

very good point,

data sheet1;
input name $ class weight year;
datalines;
a1 1 100 1990
b1 2 120 1989
c1 1 180 1990
d1 1 80 1990
;
data sheet2;
input name $ class weight year;
datalines;
a2 1 200 1990
b2 1 190 1990
c2 1 120 1990
d2 2 110 1990
e2 1 110 1990
f2 2 130 1989
;
run;
proc sql;
create table int as
  select s1.class
        ,s1.year
        ,s1.name
as name1
        ,s2.name
as name2
        ,s1.weight
as weight1
        ,s2.weight
as weight2
  from sheet1 s1
        left join
       sheet2 s2
        on s1.year=s2.year
         & s1.class=s2.class
         & abs(s1.weight-s2.weight)<=
20
  order by 1
          ,2
          ,3
;
quit;
data int;
length sample 8;
set int;
by class year name1;
if first.name1 then sample+1;
run;
data comp(keep=class year name weight sample);
set int;
array nam{2} name1 name2;
array wei{2} weight1 weight2;
do i=1 to 2;
    name=nam{i};
    weight=wei{i};
    output;
end;
run;
proc sort data=comp nodupkey;by _all_;run;
proc sort data=comp out=comp(where=(^missing(weight)));
by sample class year weight;
run;

*note: sample 3 had no matching students in sheet 2 thus only 1 person inside;
二维码

扫码加我 拉你入群

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

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

2009-6-18 01:10:00
问题已解决,真是太感谢楼上二位啦!!
二维码

扫码加我 拉你入群

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

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

2009-6-18 03:17:35
复制代码
二维码

扫码加我 拉你入群

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

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

2009-6-19 07:20:54
5# 邓贵大

真是不比不知道啊。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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