如何在将日期从excel导入sas 9.4时克服缺失值

时间:2015-08-05 20:35:17

标签: sas

我正在尝试将excel表导入sas9.4。有趣的是,我可以毫无问题地导入大部分数据。但是对于日期,有很多随机缺失值(我的excel文件中没有丢失的日期)。任何人都可以告诉我如何改进我的代码。

proc import out= sheet 
    datafile = 'D:\Date.xlsx'
    dbms = excelcs  replace;
    sheet = "abc" ;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=NO;
run;

所有日期如下:2010年6月21日,2010年6月22日。

2 个答案:

答案 0 :(得分:3)

将您的DBMS更改为XLSX并将USEDATE更改为否。然后您将该字段作为文本字段导入。

然后,您可以使用input()函数创建新的日期变量。

不理想,但很容易完成。

答案 1 :(得分:2)

很可能,您的问题是自动转换正在考虑那些mm/dd/yyyy,但当然它们实际上是dd/mm/yyyy

一种可能的解决方案是使用SASDATEFMT选项,记录为here

proc import file="myfile.xlsx" out=dataset dbms=excel replace;
dbdsopts="sasdatefmt=(varname=DDMMYY10.)";
run;

设置SAS格式,但文档也声称它会影响用于转换它的信息。

但是,您的数据实际上也可能是混合的字符/数字(如果它们是手动输入到excel中,则是在期望mm / dd / yy的excel中,而不是是dd / mm / yy)。在这种情况下,最简单的答案是更改注册表以告诉Microsoft扫描整个列(请参阅this SAS tech support note for example),或者只是将所有值转换为字符(或至少是第一对),以及然后在proc import语句中添加mixed=yes;行。

(如果您正在使用PC文件服务器,则注册表设置可能不起作用,您可能会获得上面的excelcs dbms。在这种情况下,请忽略该特定建议。)