楼主: gooddrug
7884 5

[求助]SAS如何对两个数据集进行比对? [推广有奖]

  • 19关注
  • 5粉丝

博士生

34%

还不是VIP/贵宾

-

威望
0
论坛币
972 个
通用积分
0
学术水平
0 点
热心指数
3 点
信用等级
0 点
经验
11630 点
帖子
193
精华
0
在线时间
314 小时
注册时间
2009-3-6
最后登录
2019-5-7

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
      如何对两个数据集进行比对?例如我数据集a中有20个变量,每个变量有一个最小值和一个最大值。在b数据集中同样有20个变量,每个变量有很多的值。请教如何利用利用数据集a中的最小值和最大值对数据集进行比对,并将小于最小值和大于最大值的数据挑选出来?请高手发个程序,谢谢!也可以联系我:QQ411506636
二维码

扫码加我 拉你入群

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

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

关键词:数据集 最小值 最大值 联系我 SAS 数据集

回帖推荐

gooddrug 发表于5楼  查看完整内容

非常感谢lyfyb99对这个未解的题进行了解决!

本帖被以下文库推荐

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
沙发
爱萌 发表于 2009-4-17 18:18:00 |只看作者 |坛友微信交流群
compare自己处理,很简单的程序
最恨对我说谎或欺骗我的人

使用道具

藤椅
lyfyb99 在职认证  发表于 2010-1-8 14:28:36 |只看作者 |坛友微信交流群
你提供的是横向数据,x1-x20,  在筛选时任何一个变量符合条件(小于最小值界值或大于最大值界值),则该条记录就保留吗? 感觉这样结果不是你想要的,应该先改为纵向数据,两个变量(var和value),var的值是x1-x20, value为原始值,然后去找符合结果的记录。是这样吗!

使用道具

板凳
lyfyb99 在职认证  发表于 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)
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

报纸
gooddrug 发表于 2010-1-8 19:10:52 |只看作者 |坛友微信交流群
非常感谢lyfyb99对这个未解的题进行了解决!

使用道具

地板
Leo__洋 发表于 2014-3-25 14:20:23 |只看作者 |坛友微信交流群
学习了!

使用道具

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

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

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

GMT+8, 2024-5-1 11:32