将SAS数据导出到SPSS,日期和日期时间

时间:2014-02-03 11:45:51

标签: sas spss

我在SAS内部有数据。

我想将数据文件存储为SPSS格式(* .sav)

我使用以下程序:

PROC export Data=SASdataToStoreInSPSS
FILE="Path\Filename_%sysfunc(today(),date9.).sav"
dbms=sav replace;
RUN;

这很有效。除非我在SPSS中打开文件,否则日期将被严格格式化。

例如:

156405 08:51:00

应该是

3-Jan-2011 08:51

我可以手动更改SPSS中的数据格式。因此值是正确的日期值,除非它们不会以可读格式自动格式化。

我尝试在保存到DATETIME20之前更改SAS中的格式。或DATETIME23.3。但这没有用。

我希望这可以在不打开SPSS并在那里运行语法的情况下工作。 SAS吐出的SPSS文件必须直接邮寄给其他数据用户。

3 个答案:

答案 0 :(得分:0)

我认为这可能是SAS导出的错误,也可能是SPSS的一个问题,其中一些默认值已更改。发生的事情是SAS将其存储为SPSS日期 - 但宽度为16,这不足以保存完整的日期时间。我不认为您可以将DBDSOPTS与DBMS = SPSS一起使用,因此我不知道在将文件导入SPSS之前有一个很好的解决方法。

但是,您可以使用SPSS Production工具自动执行此操作;我之前编写了一个导入脚本,并要求SAS使用批处理文件运行spssprod。这是一个令人恼火的解决方法,但它可能是最简单的,除非SAS技术支持可以帮助你(当然尝试这一点 - 他们通常只需要几个小时的初始接触转换)。

答案 1 :(得分:0)

SAS提到它与他们使用的SPSS驱动程序有关。显然这不是一个简单的解决方案,因此他们将问题转发给二线技术支持。

您需要的解决方法是将日期分为两列。一个有日期,一个有时间。

data SPSS2;
set SPSS;

date = put(datepart(DatumSPSS), date9.); 
time = put(timepart(DatumSPSS), time8.); 
run;

或者您可以告诉最终用户如何更改SPSS中日期的格式。

答案 2 :(得分:-1)

对于自动化方法,请尝试使用此.NET应用。您需要SPSS,但SAS不需要自动转换大量SAS文件。 Manual Process included code samplesApplication Download