楼主: akalius
1422 9

匹配字段问题 [推广有奖]

  • 10关注
  • 3粉丝

讲师

48%

还不是VIP/贵宾

-

威望
0
论坛币
4168 个
通用积分
9.1543
学术水平
4 点
热心指数
6 点
信用等级
6 点
经验
7832 点
帖子
261
精华
0
在线时间
605 小时
注册时间
2009-7-22
最后登录
2024-4-9

楼主
akalius 学生认证  发表于 2016-11-17 20:15:21 |只看作者 |坛友微信交流群|倒序 |AI写论文
200论坛币
主要表格
id
工商银行
工行
中国工商银行
中国工行


配比表格
idaidb
工行中国工商银行
工商银行中国工商银行


规则是,只要ida的字段存在于id中,那么就在主要表格中生成一个新的变量idx,取值为ida对应的idb

关键词:工商银行 中国工商 商银行 Dai 中国工商 工商银行
沙发
akalius 学生认证  发表于 2016-11-18 09:12:06 |只看作者 |坛友微信交流群
ida如果在主要表格中找不到匹配的    那么新生成的变量idx取值仍然是id

使用道具

藤椅
史春成1 发表于 2016-11-18 09:33:24 |只看作者 |坛友微信交流群

使用道具

板凳
wang1839 在职认证  发表于 2016-11-18 09:42:50 |只看作者 |坛友微信交流群
proc sql;
create table final as select id, case  
when kindex(id,ida) then idb
else id end as idx from main left join cor on kindex(id,ida);
quit;


使用道具

报纸
akalius 学生认证  发表于 2016-11-18 10:07:44 |只看作者 |坛友微信交流群
wang1839 发表于 2016-11-18 09:42
proc sql;
create table final as select id, case  
when kindex(id,ida) then idb
试着有的字段可以   有的不行   不知道什么原因

使用道具

地板
wang1839 在职认证  发表于 2016-11-18 10:20:43 |只看作者 |坛友微信交流群
把不行的挑出来看看

使用道具

7
akalius 学生认证  发表于 2016-11-18 10:40:27 |只看作者 |坛友微信交流群
wang1839 发表于 2016-11-18 10:20
把不行的挑出来看看
大部分字段都不可以    只有几个成功了    数据太大了

使用道具

8
不是吧258123 发表于 2016-11-18 11:35:32 |只看作者 |坛友微信交流群
data a;
input id $12. ;
list="'"||compress(id)||"'";
datalines;
工商银行
工行
中国工商银行
中国工行
;
run;

proc sql;
select distinct list
into:b separated by ","
from a;
quit;
%put &b;

data b;
input ida $ idb $16.;
if ida in ( &b) then idx=idb;
datalines;
工行    中国工商银行
工商银行        中国工商银行
;
run;

使用道具

9
Bel-esprit 发表于 2016-11-18 15:49:01 |只看作者 |坛友微信交流群
proc sql;
    create table new as
    select *
    from key_table as a left join table as b
    on a.id=b.ida;
quit;
data new;
    set new;
    if ida eq ' ' then idx=id;else idx=idb;
    keep id ida idx;
run;

使用道具

10
lovexialulu 发表于 2016-11-18 17:01:23 |只看作者 |坛友微信交流群
我建议先把 ida        idb 处理下 ida 取长度最小的        idb取nodupkey的 比如这样
ida idb
工行 中国工商银行
农行 中国农业银行
建行 中国建设银行

if prxmatch("/.+?工.+?行.+?/",id) then idx='中国工商银行';
else if prxmatch("/.+?农.+?行.+?/",id) then idx='中国农业银行';
elss if prxmatch("/.+?建.+?行.+?/",id) then idx='中国建设银行';
else idx='NA';

使用道具

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

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

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

GMT+8, 2024-4-25 13:37