各位大大好,最近使用SAS处理数据时,遇到了一个问题,自己花了很多时间在网上搜找,但仍然不得要领。问题是这样的:
1、我现在有一个数据表TableA,其中有一个变量Info,每一行里面包含了大量的文字信息。
2、此外,我还有一个数据表TableB,里面只有一个变量叫做Keyword,每一行都是一些中文的单词。
3、我现在想做的就是:在TableA中创建一个新变量dummy,然后对每一行的Info进行检索,如果Info内容里面包含有Keyword变量里任意一行的中文单词,就对这一行的dummy赋值为1。如果完全不含有任何一个关键词,则赋值为0.
TableA:(实际的Info内容要比下面的这些长得多,大多数都至少有20字以上)
Info 其他变量1 其他变量2 ...
蛋糕点心甜 XXX XXX
喜欢理发 XXX XXX
点心师傅 XXX XXX
做蛋糕的 XXX XXX
... ... ...
TableB:(Keyword里每行本身比较短,一般不超过5个字的,但keyword行数很多)
Keyword
蛋糕
点心
...
希望最后得到的表:
Info 其他变量1 其他变量2 ... dummy
蛋糕点心甜 XXX XXX 1
喜欢理发 XXX XXX 0
点心师傅 XXX XXX 1
做蛋糕的 XXX XXX 1
... ... ... ...
我知道如果keyword只是几个词的话,可以用 where Info contains "XXX" 作条件来挨个赋值,但是现在keyword十分多,我就不知道该怎么办了。我的朋友和我说要使用“游标”,但我搜索了半天,也没找到怎么做。
希望有大大能有Proc SQL下的方式能帮我解决这一难题。
另外,我知道直接在data步下,可以用 set if find(info, "XXX") then dummy=1 来挨个赋值,但是对于keyword很多的时候我又不知道怎么办了,如果有大大还能从data步的角度帮助解决一下就更好啦~ (p.s 希望优先SQL的角度解决,因为导师要求全部使用SQL步来处理...)
多谢各位大大!!!跪谢!!!