SAS无法通过匹配字符变量来合并两个数据集

时间:2016-05-06 22:11:09

标签: character-encoding sas

我有两个数据集,一个从.xlsx导入,一个从.csv导入。我做了扫描,修剪,upcase和所有这些东西来清理两个数据集。我尝试了proc sql和data步骤,将两者合并为一个字符变量。 SAS将无法找到任何匹配项。但是,当我将两个数据集导出回.xlsx,然后并排复制并粘贴两个数据集中的字符列。显然有许多匹配,Excel也认为它们是相同的(使用if语句来检查它们)。

这里发生了什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

您的变量中可能包含不可见的字符,从而导致问题。要查看这些,请使用十六进制格式输出变量以查看差异。

您可以使用COMPRESS()函数去除任何不可见的字符。

答案 1 :(得分:0)

调整变量值中前导空格的存在可能很困难。 PUT语句的默认效果是删除它们。你需要使用$ CHAR。或$ VARYING。格式以保留前导空格。 $ QUOTE。格式也可以帮助。或者您可以使用可打印字符包围字符串,以便PUT不会使用QUOTE()或CAT()函数删除前导空格。

使用LEFT()功能删除前导空格。

您还可以使用STRIP()函数删除前导和尾随空格,但SAS比较不关心尾随空格。当您将值重新分配给字符变量时,尾随空格将再次返回,因为SAS字符变量是固定长度,并在右侧用空格填充。