全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
8247 5
2009-04-17
      如何对两个数据集进行比对?例如我数据集a中有20个变量,每个变量有一个最小值和一个最大值。在b数据集中同样有20个变量,每个变量有很多的值。请教如何利用利用数据集a中的最小值和最大值对数据集进行比对,并将小于最小值和大于最大值的数据挑选出来?请高手发个程序,谢谢!也可以联系我:QQ411506636
二维码

扫码加我 拉你入群

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

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

全部回复
2009-4-17 18:18:00
compare自己处理,很简单的程序
二维码

扫码加我 拉你入群

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

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

2010-1-8 14:28:36
你提供的是横向数据,x1-x20,  在筛选时任何一个变量符合条件(小于最小值界值或大于最大值界值),则该条记录就保留吗? 感觉这样结果不是你想要的,应该先改为纵向数据,两个变量(var和value),var的值是x1-x20, value为原始值,然后去找符合结果的记录。是这样吗!
二维码

扫码加我 拉你入群

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

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

2010-1-8 17:40:15
我试了,下面的宏可以解决,20各变量中任何一个值符合条件则该记录保留。
%macro aa(data1=, data2=, dsout=);

proc contents data=&data1 out-=temp;run;

data _null_;
set temp end=eof;
call symput('var'||left(_N_),strip(memname));
if eof then
call symput('nobs',left(_N_));
run;
%put &nobs;

%do i=1 %to &nobs;
proc sql;
select min(&&var&i), max(&&var&i) into :min_&&var&i, :max_&&var&i
from &data1;
quit;
%put &&&&min_&&var&j   &&&&max_&&var&j;
%end;


proc sql;
create table &dsout as
select *
from &data2
where
%do j=2 %to &nobs;
(&&var&j<&&&&min_&&var&j or &&var&j>&&&&max_&&var&j) or
%end;
(&var1<&&min_&var1 or &var1>&&max_&var1);      
quit;

%mend aa;

%aa(data1=data1, data2=data2, dsout=dsout)
二维码

扫码加我 拉你入群

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

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

2010-1-8 19:10:52
非常感谢lyfyb99对这个未解的题进行了解决!
二维码

扫码加我 拉你入群

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

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

2014-3-25 14:20:23
学习了!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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