Sas SCAN函数更改短语

Sas SCAN函数更改短语,sas,Sas,我有一个解码短语(AE_seru_D)‘研究者判断中的重大医疗事件’,我需要将其更改为‘研究者判断中的重大医疗事件’,因为r和s之间的撇号导致程序出错。我无法更改解码(AE_seru_C),但希望使用扫描函数编程一行代码,以搜索AE_seru_d是否为ne“”,是否包含此短语,但只希望搜索短语的一部分,就像搜索整个短语一样,这将导致程序仍然因撇号而出错。扫描是这里最好的选择吗 使用Reeza的想法:使用compress()函数和'p'选项删除所有标点符号。假设您希望在整个短语周围有一个单引号,请

我有一个解码短语(AE_seru_D)‘研究者判断中的重大医疗事件’,我需要将其更改为‘研究者判断中的重大医疗事件’,因为r和s之间的撇号导致程序出错。我无法更改解码(AE_seru_C),但希望使用扫描函数编程一行代码,以搜索AE_seru_d是否为ne“”,是否包含此短语,但只希望搜索短语的一部分,就像搜索整个短语一样,这将导致程序仍然因撇号而出错。扫描是这里最好的选择吗

使用Reeza的想法:使用
compress()
函数和
'p'
选项删除所有标点符号。假设您希望在整个短语周围有一个单引号,请使用
cats()
将结果用单引号括起来

如果只需要删除引号并保留其他标点符号,请直接在
compress()
中指定它们:

来源:

COMPRESS()可能是一个更好的选项,因为它可以直接删除“”而不必担心位置,或者撇号有多个原因。在变量的值中使用单引号(也称为撇号)不会导致任何编码问题。显示您正在运行的代码,其中单引号导致了问题。注意:如果要将该值作为文字值写入,则需要在外部使用双引号或将单引号加倍<代码>“不要”或
“不要”
data want;
    AE_SER_D = cat("'Is a significant medical event in the Investigator's ", 'judgment"');
    AE_SER_D_Fixed = cats("'", compress(AE_SER_D,,'p'), "'");
run;
data want;
    AE_SER_D = cat("'Is a significant medical event in the Investigator's ", 'judgment"');
    AE_SER_D_Fixed = cats("'", compress(AE_SER_D, "'"""), "'");
run;