我从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"
烟草是一个连续的变量。
我该怎么办?
答案 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;