PROC IMPORT导入SAS数据集后字符变量显示截断但十六进制数据完整的问题咨询
SAS字符变量拼接后显示截断但数据未丢失的原因与解决办法
- 数据根本没丢,你通过十六进制解码得到完整内容已经证明了这一点,只是显示环节被截断了。
- 核心问题出在变量的显示格式(FORMAT):虽然两个数据集的变量存储长度都是
$18,但至少有一个数据集里该变量被设置了较短的显示格式(比如$8.)。SAS在拼接数据集时,会默认继承第一个数据集的变量格式(使用SET语句时),或在PROC SQL中优先沿用某一方的短格式,导致输出时仅按短格式的长度显示前几个字符。 - 验证方法:执行
PROC CONTENTS DATA=你的数据集名; RUN;,查看该变量的FORMAT属性,能明确看到其中一个数据集的格式长度小于18。 - 解决办法:
- 拼接时直接指定显示格式:使用SET语句时,添加一行
FORMAT 你的变量名 $18.;;使用PROC SQL时,在SELECT子句中写你的变量名 FORMAT=$18. - 先修正单个数据集的格式再拼接:
DATA 修正后数据集; SET 原数据集; FORMAT 你的变量名 $18.; RUN;
- 拼接时直接指定显示格式:使用SET语句时,添加一行
内容的提问来源于stack exchange,提问作者Jim Nezamis
相关产品推荐
相关产品推荐

