You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SAS字符变量中移除指定葡萄牙语姓名前缀词?

SAS去除葡萄牙语姓名前缀的解决方案

你的代码问题在于compress函数是删除指定单个字符,而非完整单词,这会错误删除姓名中包含这些字母的部分,同时substr(...,2)会误删字符串首字符。要精准删除DA、DO、DE、DAS、DOS这些完整前缀单词,推荐使用SAS正则表达式函数PRXCHANGE,以下是正确实现代码:

data want;
    set have;
    /* 匹配并删除所有独立的葡萄牙语前缀单词 */
    NEW_NAMES = prxchange('s/\b(DA|DO|DE|DAS|DOS)\b//i', -1, NAMES);
    /* 清理多余空格,保证格式整洁 */
    NEW_NAMES = strip(compbl(NEW_NAMES));
run;

代码说明:

  • \b:单词边界标记,确保仅匹配独立的前缀单词(例如不会误删DOSOMEDE中的DOS部分)
  • (DA|DO|DE|DAS|DOS):需要删除的前缀列表,用|分隔多个匹配项
  • //i:忽略大小写,兼容数据中可能存在的小写前缀
  • -1:表示替换所有匹配到的内容,而非仅第一个
  • compbl:将多个连续空格合并为单个空格,strip去除首尾空格,避免删除前缀后出现多余空格

运行上述代码后,生成的NEW_NAMES变量将完全符合你期望的结果。

内容的提问来源于stack exchange,提问作者LuizZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:12:39