全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3137 3
2017-06-15


假设有如下表~

NAME PHONE CONTACTOR PHONE_1;
A 11 B 22
B 22 A 11
C 33 D 44
D 44 E 99

我需要找出A和B来,因为A和B互相填写了对方作为联系人~

我理解逻辑大概是这样,
1 data里读到第一行, NAME=A CONTACOTR=B 的时候
2 判断B 在不在 表D 的NAME 中~
3 然后再判断 表D 中 NAME=B的哪一行里 CONTRACOTR是否=A。
4 两重判断都是TRUE的就设定新变量MARK=1 。。。。


然后导出MARK=1的就好~~
到时候再一个个看就好了~~

——————————————
实际上还要判断2次 电话是否互相匹配~~~

不知道有没有SAS高手能教教我~

我只会python 那种 dictionary 然后输入位置编码 一个个检查那种~
但是我想sas data里面自动在走一种神秘的循环。。。。。

玩了一天。。。不会玩






二维码

扫码加我 拉你入群

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

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

全部回复
2017-6-15 23:15:44
data a;
input
NAME $ PHONE CONTACTOR $ PHONE_1;
lines;
A 11 B 22
B 22 A 11
C 33 D 44
D 44 E 99
;

proc sql;
select a.name,a.phone,b.name,b.phone from a as a, a as b
having (a.name=b.contactor and b.name=a.contactor and a.phone=b.phone_1 and b.phone=a.phone_1);
quit;

用sql判断一次就好。如果你一定要mark=1,自己再建一个如果返回的name,phone不为空值mark=1就好。
二维码

扫码加我 拉你入群

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

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

2017-6-16 09:39:05
popodan 发表于 2017-6-15 23:15
data a;
input
NAME $ PHONE CONTACTOR $ PHONE_1;
哥,不知道SQL还有这样强大的操作~
太感谢了 我连MARK都不用加。
二维码

扫码加我 拉你入群

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

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

2017-6-17 07:44:27
加一句类似的判断语句:if  NAME=A and CONTACOTR=B then mark=1
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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