如何将SAS中的几个字段转换为数字?

如何将SAS中的几个字段转换为数字?,sas,enterprise-guide,Sas,Enterprise Guide,我正在从事一个项目,将原始普查数据读入SAS企业指南,作为不同的合并输出进行处理。前几列是字符字段,用作地理标识符 其余的原始数据包含数字字段,所有字段都类似于“HD01\U VD01”,依此类推,直到数字“HD01\U VD78”。然而,偶尔人口普查数据数字会被抑制,一些观察结果会在原始数据中显示“****”,如下图所示。每当发生这种情况时,SAS都会将数字字段作为字符读取 有什么好方法可以确保“HD01_VD(whatevernumber)”在任何时候都是数字,并将“****”转换为“.”

我正在从事一个项目,将原始普查数据读入SAS企业指南,作为不同的合并输出进行处理。前几列是字符字段,用作地理标识符

其余的原始数据包含数字字段,所有字段都类似于“HD01\U VD01”,依此类推,直到数字“HD01\U VD78”。然而,偶尔人口普查数据数字会被抑制,一些观察结果会在原始数据中显示“****”,如下图所示。每当发生这种情况时,SAS都会将数字字段作为字符读取

有什么好方法可以确保“HD01_VD(whatevernumber)”在任何时候都是数字,并将“****”转换为“.”之类的空白/缺失值,从而保持字段为数字


我不想将作为字符读入的字段的每个实例硬编码回数字,因为我的代码正在处理许多不同的普查表。宏变量是实现这一点的方法吗?在每个普查表的数据步骤中使用if语句?

使用数组并循环它们将是最佳选择;正如david25272在评论中提到的那样

另一个选项是在以下位置更改《企业指南》中字段的格式:

导入任务taht读取文件:将字段更改为数字


添加查询生成器任务:创建计算字段并使用此高级表达式
输入(HD02_V36,11)。

使用数组并循环它们将是最佳选择;正如david25272在评论中提到的那样

另一个选项是在以下位置更改《企业指南》中字段的格式:

导入任务taht读取文件:将字段更改为数字


添加查询生成器任务:并创建计算字段并使用此高级表达式
输入(HD02_V36,11)。

查看此文档。如果只使用常规的
proc import
语句,日志将打印出相应的数据步骤。然后,您所要做的就是用数据步骤替换
proc import
,并修改格式。你是如何读取这些数据的?来SAS之前是什么格式的?它们是由美国人口普查局的美国Factfinder生成的csv。我不想更改原始下载数据,我想在SAS中操作我自己的版本。错误范围字段偶尔会被抑制(HD02VDU,无论什么),而是用****填充,这将使它们转换为字符字段。我想先发制人地找到这些列,并将它们设置为空白(.)以便在我的PROC IMPORT语句中以数字形式读入列。因此,您希望所有列都以数字形式读入,但您不知道会有多少列以及它们将如何被调用?有可能实现J_Lard建议的自动化:第一次尝试读入数据,获取包含proc内容的列名,然后构造正确的数据步骤将其读入。为此,您需要学习宏编程。请参阅本文档。如果只使用常规的
proc import
语句,日志将打印出相应的数据步骤。然后,您所要做的就是用数据步骤替换
proc import
,并修改格式。你是如何读取这些数据的?来SAS之前是什么格式的?它们是由美国人口普查局的美国Factfinder生成的csv。我不想更改原始下载数据,我想在SAS中操作我自己的版本。错误范围字段偶尔会被抑制(HD02VDU,无论什么),而是用****填充,这将使它们转换为字符字段。我想先发制人地找到这些列,并将它们设置为空白(.)以便在我的PROC IMPORT语句中以数字形式读入列。因此,您希望所有列都以数字形式读入,但您不知道会有多少列以及它们将如何被调用?有可能实现J_Lard建议的自动化:第一次尝试读入数据,获取包含proc内容的列名,然后构造正确的数据步骤将其读入。为此,您需要学习宏编程。