您能否在合并中有效地将 by 变量强制转换为数字?

Can you force a by variable to numeric in a merge efficiently?

我有一堆带有序列号的 SAS 数据集,我想将其作为合并依据。不幸的是,在某些数据集中,seq 是数字,而在其他数据集中,它是字符。

我收到以下错误:

ERROR: Variable seq has been defined as both character and numeric.

有很多表正在合并,要找到罪魁祸首的表会很费力。是否可以在所有表​​的 merge by 语句中以有效的方式将 seq 强制为数字?

不,没有办法直接将其强制为数字(不像放入单个长度语句或类似的东西)。您需要根据数据集将其转换为数据集上的数字。

有一些方法可以做到这一点,而不必担心每个数据集的数据类型是什么。一种是从 dictionary.columns 创建重新编码。另一种方法是将每个数据集写出到一个文本文件中,然后使用一致的输入语句将它们读回。第三种是使用 CATS 将变量转换为字符,然后将其读回并输入为数字。

您可以创建合并变量类型为字符的每个数据集的视图,在视图中应用适当的重新编码/删除/重命名逻辑,然后将视图与其他数据集合并。如果您需要对大量数据集执行此操作,您可以将逻辑编写为一个简单的宏,然后循环遍历它们。