SAS无法识别连续变量

时间:2015-01-23 16:46:25

标签: sas

我从excel导入了一个数据集,我想运行逻辑回归,但SAS不识别连续变量。 这是我使用的代码:

Proc logistic data=work.heart class famhist /param=ref ref=first
model chd = tobacco ldl typea age famhist;
run;

我在Log中收到以下消息:

"Variable tobacco should be either numeric or specified in the CLASS statement"
烟草是一个连续的变量。 我该怎么办?

1 个答案:

答案 0 :(得分:2)

SAS当然理解连续变量,尽管它不像r那样具有离散类型。 SAS具有数字和字符类型(没有其他简单类型)。

但是,从Excel导入时,SAS不一定会使列符合您的想法。特别是, Excel 没有像SAS那样的类型概念;一个单元格或多或少有一个类型,但是一个列可以有你想要的任何东西。通常情况下,SAS会在导入时将数字改为字符,否则会丢失一些数据。

正如Scortchi在评论中指出的那样,这很有可能来自excel文件中的某些字符数据,如“NA”。您可以通过多种方式更改此内容。

您可以在事后更改它,如下所示:

data have_fixed;
  set have(rename=tobacco=tobacco_c);
  tobacco=input(tobacco_c,??best12.); *or whatever a reasonable informat is;
run;

??告诉SAS不要担心那些不能整齐转换的东西,只是让它们丢失(.)。如果您有任何处理它的逻辑,请实现它(即,如果您有一些您想要的其他值,请先执行此操作)。

您也可以告诉SAS如何导入特定变量。

proc import file="c:\myfile.xlsx" out=have dbms=excel replace;
  dbsopts="dbsastype=(tobacco='numeric')";
run;