Sas 避免转换为数字时出现无效的数据语句

Sas 避免转换为数字时出现无效的数据语句,sas,Sas,我有一个包含几个变量的大表,这些变量将被输入到统计分析中。作为一名统计学家,我更喜欢所有的因素都是数字的,这样它们在回归模型中就可以预测了,并且有显示数值标签的格式,例如种族、性别 当我设置原始数据时,我重命名了所有要重新编码的字符变量,以添加后缀c(用于字符值)。然后,我为每一个使用input语句,并使用相应的best1.或best8.或适当的格式 问题是,当缺少的变量被编码为实际缺少的值时,日志会变得混乱,例如。我可以添加一行,如果不缺少(varc),那么var=input(varc,bes

我有一个包含几个变量的大表,这些变量将被输入到统计分析中。作为一名统计学家,我更喜欢所有的因素都是数字的,这样它们在回归模型中就可以预测了,并且有显示数值标签的格式,例如种族、性别

当我
设置
原始数据时,我重命名了所有要重新编码的字符变量,以添加后缀
c
(用于字符值)。然后,我为每一个使用
input
语句,并使用相应的
best1.
best8.
或适当的格式

问题是,当缺少的变量被编码为实际缺少的值时,日志会变得混乱,例如
。我可以添加一行
,如果不缺少(varc),那么var=input(varc,best8.)用于每个变量,但这似乎效率低下且难以读取

有没有更好的方法处理这个问题?

你能试着用

PROC STDIZE .. 
REPONLY MISSING=0;
RUN;

创建这样的格式并使用它,而不是
best8.

proc format library=work;
    invalue myform
    '' = .
    other=best8.
    ;
run;
options fmtsearch=(work);

如果您可以完全消除缺失值消息(包括“可能”成为问题的内容),您可以将
预先添加到informat,告诉它不要给您该警告

var=input(varc,??8.);

斯迪泽帮不上忙。变量是字符,我希望它们是数字的,并且不改变它们的编码级别。这是方便、优雅和高效的。以前,SAS发出警告所消耗的CPU时间与读取记录本身所消耗的CPU时间一样多。切换到这种格式将处理时间减半。(我有一个非常大的数据集)。(+1)这是一个很好的响应,事实上,我有一个单独的SAS文件,有数百种格式,那么多了一个又有什么害处呢?不过,我更喜欢Joe的答案,因为它使用了现有的格式。谢谢!正如Joe所指出的,他的解决方案会抑制由缺少值引起的消息之外的消息。我的方法应该消除丢失的值消息,但仍会对其他类型的问题发出警告。