如何避免SAS EG中Transpose步骤为数据添加多余空格的问题
问题根因
SAS执行转置操作合并不同字符列时,会默认取所有源字符列的定义长度作为新合并列的长度,而非各列实际存储内容的长度。你的姓名字段为存储完整中文名通常定义长度较长(一般2030字符),日期列的定义长度仅为67字符,转置后更短的日期值会自动左补空格对齐到新列的最大定义长度,就出现了前缀空白的现象。
SAS EG端解决方案
- 方案1:调整Transpose步骤内置配置
打开转置步骤的配置界面,切换到「选项」标签页,找到字符变量处理相关分类,勾选修剪转置后的字符值,移除前导/尾随空白即可。不同版本SAS EG该选项命名略有差异,部分版本显示为「将字符值修剪到实际长度」,修改后重新运行步骤即可直接解决前缀空格问题。 - 方案2:转置前预处理源字段
如果方案1不生效,在转置步骤前新增「计算列」节点,对两个待转置的字段分别做去空格处理:
日期列计算逻辑:LEFT(TRIM(你的原日期列名))
姓名列计算逻辑:LEFT(TRIM(你的原姓名字段名))
将预处理后的字段传入转置步骤即可避免空格生成。 - 方案3:转置后处理结果列
如果不想修改原有转置逻辑,在转置步骤后新增计算列,对合并后的字符列执行LEFT(TRIM(你的合并后列名))即可直接清除所有前缀空白。
内容的提问来源于stack exchange,提问作者Boswser
相关产品推荐
相关产品推荐

