楼主: 端正好2
4197 2

[有偿编程] SAS如何根据数据集A中字段的条件筛选数据集B中的结果 [推广有奖]

  • 0关注
  • 0粉丝

大专生

26%

还不是VIP/贵宾

-

威望
0
论坛币
366 个
通用积分
6.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3523 点
帖子
2
精华
0
在线时间
96 小时
注册时间
2016-8-25
最后登录
2022-8-7

90论坛币
求助,本人SAS新手。问题是这样的。举个例子 :数据集DATA1:
NAME 状态A 状态B 状态C 状态D
a          y        n        n       y
b          n        n        y       n
c          n        n        n       n
……

数据集DATA2:
NAME  状态A 状态B 状态C 状态D 观测值
a           n        n       n      n           20
a           n       n        n      y            15
a           n       n        y      y            30
a           n       y        n     n             39
……
b           n        n       n      n           20
b           n       n        n      y            15
b          n       n        y      y            30
b         n       y        n     n             39

……

如何根据DATA1中的观测a(b,c,d……)的条件,比如DATA1第一条观测 a         y        n        n       y,筛选出DATA2中观测值。
由于数据量大,我不明白的就是如何自动读取DATA1中的条件,然后去匹配DATA2中符合条件的观测的观测值。
谢谢各位大佬帮忙!!!!!!

关键词:筛选数据 条件筛选 数据集 Data name 如何
沙发
端正好2 发表于 2016-12-10 16:03:40 |只看作者 |坛友微信交流群
dingshangqu!!!!!!!!!!

使用道具

藤椅
zhanjie.wang 发表于 2016-12-11 21:55:04 |只看作者 |坛友微信交流群
是根据数据集A中的状态b,c,d去筛选数据集B中的数据吗?  
可以用PROC SQL实现:
data a;
input name $2. statusA $2. statusB $2. statusC $2. statusD $2.;
cards;
a y n n y
b n n y n
c n n n n
;
run;

data b;
input name $2. statusA $2. statusB $2. statusC $2. statusD $2. value;
cards;
a n n n n 20
a n n n y 15
a n n y y 30
a n y n n 39
b n n n n 20
b n n n y 15
b n n y y 30
b n y n n 39
;
run;

proc sql;
select *
from b
where exists (
select 1 from a
where a.statusB=b.statusB
and a.statusC=b.statusC
and a.statusD=b.statusD
);
run;
  
  

使用道具

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

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

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

GMT+8, 2024-4-28 11:55