全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1956 5
2017-05-21
悬赏 20 个论坛币 已解决

请教如何进行下列操作:识别是否包含特定字符,如果是,则返回特定字符。

为求清晰说明,我举例如下。

data test;

input var1 $ var2 $;

cards;

aab a

aac b

def c

efg a

bfc c

;

proc print;

run;

得到:

           Obs   var1    var2

            1    aab      a

             2    aac      b

             3    def      c

             4    efg      a

             5    bfc      c

我是用的程序如下:

proc sql;

     select distinctvar2 into :chkvar separated by ''

     from test;

quit;

data test;

        settest;

        ifprxmatch("/[&chkvar]/",var1)>0 then match=1;

       elsematch=0;

run;

得到:

  Obs   var1    var2    match

  1    aab      a        1

  2     aac     b        1

  3    def      c        0

  4    efg      a        0

  5     bfc     c        1

但这不是我要的结果,我想要的结果应当如下

  Obs   var1    var2    match

  1    aab      a        a

  1    aab      a        b

  2     aac     b        a

2     aac     b        c

  3    def      c        无匹配信息

  4    efg      a        无匹配信息

  5     bfc     c        b

  5     bfc     c        v

于是我使用了下面的程序,但是这个程序无法运行。请教大神如何操作才可以实现我想要的结果。

data test;

        settest;

        ifprxmatch("/[&chkvar]/",var1)>0 then match="/[&chkvar]/";

       elsematch="无匹配信息";


run;

二维码

扫码加我 拉你入群

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

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

全部回复
2017-5-21 11:04:40
复制代码
二维码

扫码加我 拉你入群

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

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

2017-5-22 11:21:36
我想了一个下午,编了一个宏实现的,效率奇低。非常感谢l1i2n3i4n5g 的程序,佩服。
二维码

扫码加我 拉你入群

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

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

2017-5-22 11:22:51
追加奉上5个论坛币。
二维码

扫码加我 拉你入群

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

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

2017-5-22 14:00:06
追加一个操作问题。
我换了几个数据,test表格变成下面这种。var2的取值长短不一。
data test;
input var1$ var2 $;
cards;
aab a
aac b
def ac
efg ab
bfc aac
;
run;

再按您给的程序跑,得到的结果如下。
  

var1

  
  

var2

  
  

var1_

  
  

pattern

  
  

match

  
  

aab

  
  

a

  
  

b

  
  

1

  
  

a

  
  

aab

  
  

a

  
  

1

  
  

b

  
  

aac

  
  

b

  
  

c

  
  

1

  
  

a

  
  

aac

  
  

b

  
  

1

  
  

c

  
  

bfc

  
  

aac

  
  

fc

  
  

1

  
  

b

  
  

bfc

  
  

aac

  
  

f

  
  

1

  
  

c

  
这个表格只是匹配了a,b,c,单个字母,对于ac,ab,aac等字母组合并未匹配。请问能否将ac,ab,aac等字母组合也进行匹配?我的实际数据包含这些组合。


二维码

扫码加我 拉你入群

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

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

2017-5-23 17:37:38
mosuchen 发表于 2017-5-22 14:00
追加一个操作问题。
我换了几个数据,test表格变成下面这种。var2的取值长短不一。
data test;
复制代码
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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