【问题标题】:Data not matching when imported from spss into r and spss into sas从spss导入r和spss导入sas时数据不匹配
【发布时间】:2015-10-28 15:53:58
【问题描述】:

我一直在尝试将 spss (.sav) 文件导入 r 和 sas 并匹配数据。日期变量数量巨大,所以我在 R 中转换它。我得到了日期和时间变量的差异。 sas 中缺少在 r 中显示开始日期的记录之一。所有的时间戳都是 12.00.00 in r 而 00.00.00 in 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 任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • 您认为哪个时间戳是正确的 - 12:00 或 00:00?您可能需要展示一些示例 - 它在 SPSS 中显示什么,基础数字是多少(通常是自 [某个日期] 以来的秒数)?
  • 我不确定,因为我没有 spss。但我认为 00.00 时间戳是正确的。基础数字看起来像 13558320000
  • 请以可读的方式将其编辑到问题中(不在链接后面)。举几个例子就足够了。
  • 关于 SAS 中的缺失值,SAS 日志中是否有任何可能指示“无效”数据的警告?
  • 没有日志是干净的,它说数据集已成功创建。没有警告或错误。

标签: r sas spss


【解决方案1】:

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

ISOdate(年、月、日、小时 = 12、分钟 = 0、秒 = 0、tz = "GMT")

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

【讨论】:

  • 谢谢,这很有道理。如果您知道这个问题,您能否澄清一下为什么 sas 会丢失?
  • 我个人觉得更好奇为什么 R 将它作为默认设置。我的猜测是它与儒略/格里高利差有关(儒略日期的中午零点,而不是午夜),但谁知道呢。当日期转换为日期时间时,也许它只是选择估算平均值(12:00 是半天)而不是原点(0:00,如 SAS)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 2016-10-19
相关资源
最近更新 更多