楼主: gooddrug
8307 5

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

  • 19关注
  • 5粉丝

已卖:42份资源

博士生

34%

还不是VIP/贵宾

-

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

楼主
gooddrug 发表于 2009-4-17 14:33:00 |AI写论文

+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
拉您进交流群
GMT+8, 2025-12-5 22:01