在SAS中如何根据另一列的取值删除指定列中的对应文本
SAS 字符串逐行匹配删除实现方案
直接使用SAS内置字符串替换函数即可实现需求,无需自行编写循环逻辑,参考代码如下:
data want; set have; length cleaned_words $50.; /* 替换指定内容为空后压缩多余空格,再去除首尾空白 */ cleaned_words = strip(compbl(tranwrd(words, strip(remove), ''))); /* 若需要直接覆盖原words列,将上述变量名改为words即可 */ run;
函数说明
tranwrd(源字符串, 待匹配子串, 替换内容):SAS内置字符串替换函数,会在源字符串中查找所有匹配的子串,统一替换为指定内容,此处我们将待删除内容替换为空字符串实现删除效果strip(remove):删除待匹配内容首尾的空格,避免因字符两侧存在空白导致匹配失败compbl():将替换后产生的连续多个空格压缩为单个空格,避免删除内容后残留多余空白strip():最终删除结果字符串首尾的空格,得到规整的输出
运行上述代码后得到的want数据集中,cleaned_words列的结果如下:
- Michigan address
- Hawaii address
- broadway niceblock
内容的提问来源于stack exchange,提问作者Fatih Ekici
相关产品推荐
相关产品推荐

