SAS:匹配单个变量的字符串值中的单个单词,然后用空白替换整个字符串值

时间:2014-04-09 15:03:48

标签: string substring sas

我在SAS 9.2中使用现有数据集。我需要一种简单的方法来匹配单个变量的字符串值中的单个单词,然后用空格替换整个字符串值。我没有SQL,宏等方面的经验,我希望有一种方法可以做到这一点(即使代码效率较低“,对于新手来说也是如此。

具体来说,我需要删除变量“病原体”中包含“growth”一词的整个字符串。样本值包括“两天没有增长”,“没有增长”,“没有增长”等。我不能输入所有可能的字符串,因为我还不知道它们会如何变化(我们只输入了一些观察结果)到目前为止。)

TRANSWD和TRANSLATE不起作用,因为当目标词只是字符串的一部分时,它们不允许我替换整个短语。

我看过的其他方法(例如,在http://analytics.ncsu.edu/sesug/2007/CC06.pdf使用PRX的SESUG论文)似乎删除了数据集中每个变量中目标字符串的所有实例,而不是仅仅在感兴趣的变量中。

显然,在我执行其中一个操作然后合并之前,我可以将数据集子集化为单个变量,但我希望不那么复杂。虽然如果有人可以提供适合的示例代码,我肯定会给出一些更复杂的镜头(非常感谢)。

提前致谢 - 金

1 个答案:

答案 0 :(得分:4)

您是否可以更清楚地了解数据集的构造方式?我认为如果你的变量病原体逐句存储,mjsqu的解决方案将起作用。如果没有那么我会说你最好的办法是将块解析成句子然后应用mjsqu的解决方案。

DATA dataset1;
    format Ref best1.
        pathogen $40.;
    input Ref pathogen $40. ;
datalines;
1 No growth during two days
2 no growth,
3 growth did not occur,
4 does not have the word
;
RUN;

DATA dataout;
    SET dataset1;
    IF index(lowcase(pathogen),"growth") THEN pathogen="";
RUN;