【发布时间】:2016-05-06 22:11:09
【问题描述】:
我有两个数据集,一个从 .xlsx 导入,一个从 .csv 导入。我确实扫描、修剪、大写和所有这些东西来清理这两个数据集。我尝试了 proc sql 和 data 步骤以通过字符变量将两者合并。 SAS 将无法找到任何匹配项。但是,当我将这两个数据集导出回 .xlsx 然后并排复制并粘贴这两个数据集的字符列时。显然有很多匹配项,Excel 也可以识别它们是相同的(使用 if 语句来检查它们)。
这里发生了什么?
谢谢!
【问题讨论】:
-
最有可能是某种不可见字符,使用十六进制格式将一些匹配值放入日志中,看看它们是否不同。或者您的代码不正确 - 因为我们看不到它,所以我们只能猜测。在这些情况下,您需要能够发布示例数据 - 以十六进制格式输出 put 语句的结果至少是一个好的开始。现在我们没有太多事情要做。
-
你在@Reeza 上是对的!十六进制格式表明它们是不同的。例如,一个是 4269726D696E6768616D2020202020,另一个是 204269726D696E6768616D20202020,但两者都显示“伯明翰”......好吧,我检查了 ascii 代码表,20 对应于空格。但我用过 trim()...谢谢!
-
看起来您的值中有一个前导空格。您是否尝试过 COMPRESS() 函数?查看修饰符并选择删除不可打印字符的修饰符,我想不起来了。
-
谢谢@Reeza! Compress() 有效!
-
strip(compress(string,,'kw'))将只保留可打印字符,然后删除所有前导和尾随空格。