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

SAS中含自定义格式$CDCLOANTI的字符列用COMPRESS删冒号返回空列问题

问题分析与解决方法

核心原因

SAS的自定义格式(如$CDCLOANTI)仅控制变量的显示效果,不会修改变量的原始存储值。COMPRESS函数直接作用于变量的底层存储数据,而非格式化后的显示内容。你看到的带冒号的内容是格式渲染后的结果,原始存储的Prenom值可能为空,或者本身不含冒号,导致COMPRESS返回空列。

解决步骤

1. 确认变量的原始存储值

先取消格式查看真实数据:

proc print data=table1 noobs;
   var Prenom;
   format Prenom; /* 取消自定义格式,显示原始值 */
run;

通过这个步骤可以明确Prenom实际存储的内容,判断是否是原始值为空导致结果异常。

2. 处理格式化后的显示值

如果需要针对格式化后的带冒号内容处理,先用PUT函数将格式渲染后的结果转为字符值,再执行COMPRESS:

data WORK.p;
   set table1;
   /* 先获取格式化后的字符串,再删除冒号 */
   colonne = COMPRESS(put(Prenom, $CDCLOANTI.), ':');
run;

PUT(Prenom, $CDCLOANTI.)会生成和你看到的格式化显示一致的字符串,之后用COMPRESS即可正确删除冒号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:38:16