我正在尝试将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日。
答案 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。在这种情况下,请忽略该特定建议。)