全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
12761 9
2010-08-06
悬赏 10 个论坛币 已解决
长沙孜信有限责任会计师事务所
中庆会计师事务所有限责任公司
河北华安会计师事务所有限公司
新疆华西会计师事务所
江苏天衡会计师事务所有限公司
山东正源和信有限责任会计师事务所
山东正源会计师事务所有限公司
普华永道中天会计师事务所
山东正源会计师事务所有限公司
安达信华强会计师事务所
中鸿信建元会计师事务所有限责任公司
山东烟台乾聚会计师事务所有限公司
云南亚太会计师事务所
大连正元会计师事务所
宁夏五联会计师事务所
浙江天健会计师事务所
天津津源会计师事务所
武汉会计师事务所
浙江天健会计师事务所
山西晋元会计师事务所
岳华(集团)会计师事务所


根据上面的变量生成一个新变量a,如果上面的变量中含有 天健或亚太或晋元  则a=1 否则a=0.
都有哪一些方法可以实现上上面的问题?
每种方法奖励10论坛币

最佳答案

flutter88 查看完整内容

最简单的是用index或者find函数了: if index(name,'天健') or index(name,'亚太') or index(name,'晋元') then a=1; else a=0;
二维码

扫码加我 拉你入群

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

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

全部回复
2010-8-6 11:33:09
最简单的是用index或者find函数了:
if index(name,'天健') or  index(name,'亚太') or index(name,'晋元') then a=1;
else a=0;
二维码

扫码加我 拉你入群

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

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

2010-8-6 11:45:13
1# peijiamei
data test;
input String $15.;
a=(find(string,"t","i")) or find(string,"w","i");
datalines;
Capital A here
Lower a here  
Apple         
;
二维码

扫码加我 拉你入群

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

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

2010-8-6 13:27:42
在sas中用find和index来处理中文字符匹配搜索会有问题,一般而言,建议where 来筛选,如果要标识,可以用case when,或者在find和index的结果在进行一层逻辑判断

bug如下:
复制代码

可以得到结果是c和b为10.
原因在于一个中文字符为两个字节16位,而find和index内部机制是来搜索所要字符的ASCII码,因此会有这样的问题:一个中文字符的第二个字节和它紧跟的另一个字符的第一个字节,如将两者组合会有产生另一个中文字符,而这个中文字符又恰巧是需要查找的字符,导致结果并非是需要的。
此例中:
“论”ascII码:第一个字节:C2,第二个字节: DB
“坛”ascii码:第一个字节:CC,第二个字节: B3
而DB和CC却可以组成另一个中文:“厶”

因此这段中文虽然不含“厶”,但却含有其对应的ASCII,而find和index无法对这ASCII码是否同属一个中文字符进行判断,因此仍然会返回非零值。
所以如果对大量文本进行中文查找时,由于待查找量的庞大,无法预估是否会发生这样的情况,保守起见不会使用find和index函数。

而where 语句筛选无论是contains还是like都不会有这样的问题,如果需要打标识而不是筛选,可以使用proc sql的case when

index和find函数虽然返回非零值,但是在某些情况下再加一层判断也是可以进行处理的,因为index和find默认返回是字符所在字符串的位置,因此如果对全中文字符串进行查找时,返回的值一定是个奇数,原因就是中文是两个字节,所以起始字节的位置一定是奇数,可以对返回值是否为奇数判断,而如果返回偶数,便就是上面陈述的情况了。而如果目标字符串不是全中文,含有数字或者西文字符,则无法使用奇数的判断条件,非中文字符的一个字节会改变其它中文字符所在的位置。因此字符串中并不是所有中文都是以奇数为起始位的。
复制代码
二维码

扫码加我 拉你入群

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

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

2010-8-6 14:01:26
复制代码
二维码

扫码加我 拉你入群

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

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

2010-8-6 14:43:32
5# hopewell
真人不露相,一出手就是强贴,牛~
不过看help,貌似看不出kindex的内部机制,是否函数内对字符串进行了字符分割。。。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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