2015-10-28 31 views
-1

我一直在尝试将spss(.sav)文件导入到r和sas中并匹配数据。日期变量是巨大的数字,所以我把它转换成R. I'.m得到日期和时间变量的差异。 sas中缺少显示r中开始日期的记录之一。所有时间戳都是12.00.00英镑,而00.00.00英镑。任何人都可以帮助我,我错了吗?当从spss导入到r和spss到sas中时,数据不匹配

这是我R中使用的代码:

library("memisc") 
data<-as.data.set(spss.system.file('aa.sav')) 
library("chron") 
data$formdate<-as.chron(ISOdate(1582, 10, 14) + data$formdate) 
data$randdate<-as.chron(ISOdate(1582, 10, 14) + data$randdate) 
data$med1start<-as.chron(ISOdate(1582, 10, 14) + data$med1start) 
data$med1end<-as.chron(ISOdate(1582, 10, 14) + data$med1end) 
data 

,这是我在SAS

proc import datafile="C:\ofc\aa.sav" out=mydata dbms = sav replace; 
run; 

使用看看的数据是如何既对R和SAS代码,按照这link 任何帮助,将不胜感激。谢谢。

+0

你觉得哪个时间戳是正确的 - 12:00或00:00?您可能需要展示一些示例 - 它在SPSS中显示的是什么,底层数字是多少(通常是[某日期]以来的秒数)? – Joe

+0

我不确定,因为我没有spss。但我假设00.00时间戳是正确的。底层数字看起来像13558320000 –

+0

请以可读方式(不在链接后面)将其编辑到问题中。仅举几个例子就足够了。 – Joe

回答

1

SAS中的日期时间是正确的。的SPSS数字代表的自午夜的秒数,10月14日,1582年的原因R的添加12小时,该值是可选的hour参数到ISOdate function默认值是12

ISOdate(年,月,日,小时= 12分钟= 0,秒= 0,TZ = “GMT”)

如果使用ISOdate(1582, 10, 14, 0)相反,你应该得到正确的答案。

+0

谢谢你,这很有道理。如果你意识到这个问题,你能澄清一下为什么sas错过吗? –

+0

我认为它更加好奇,为什么R将它作为默认的个人身份。我的猜测是这与朱利安/格里高利的区别有关(朱利安的日期有中午的零点,而不是午夜),但是谁知道。当日期转换为日期时间时,也许它只是选择平均值(中午12:00是一天的一半)而不是原点(如SAS所做的0:00)。 – Joe