【发布时间】:2016-06-18 08:11:59
【问题描述】:
我已经自学使用 R 大约 6 个月了,我发现当我在网上找不到解决方案时,要么是一个晦涩难懂的问题,要么是显而易见的,没有人会问它。
我认为这是后者。
基本上我已经通过 R 的 memisc 包导入了一个 SPSS 文件:
misc.MP.data <- as.data.frame(
as.data.set(
spss.portable.file("SPSS data.por")))
一切都很好,除了日期似乎是以我不熟悉的数字格式导入的(而且我没有运气在网上找到类似的东西)。
例如:
- 10/11/1946 进口为:11,489,040,000
- 23/11/1946 进口为:-1,394,738,688
- 11/12/1946 进口为:-1,393,183,488
- 18/12/1946 进口为:-1,392,578,688
尽管我意识到 R 和 SPSS 的日期参考点不同,但基于此调整它们并没有让我有所收获(例如通过 this function)。
无论如何,任何帮助将不胜感激。
编辑:
感谢大家的回复,我设法解决了这个问题,虽然我不确定它发生的确切原因。
我通常在保存和导入数据时使用 csv 格式,但是,在这种情况下,我正在教一个试图从 SPSS 迁移到 R 的本地组织如何轻松地将数据导入到 R。
我没有 SPSS,所以我使用 PSPP 阅读和理解 SPSS 文件以检查导入是否成功。但是,我在尝试使用 R 中的“foreign”命令等导入 .sav 文件时发现变量标签无法正确导入。
经过一番反复试验,我发现通过 PSPP 保存为可移植格式文件并通过 memisc 包中的 read.portable 命令导入似乎效果最好,除了如上所述导入日期(包括奇怪的 10/11 /1946 一)。
虽然我意识到 SPSS 和 R 使用不同的日期基数,但最初我注意到导入的 SPSS 日期似乎与正确日期没有预期的线性关系(见下图): Imported date vs. correct date scatter
虽然我不知道为什么会发生这种情况,但对于那些可能遇到类似问题的人,我使用的解决方案是将 PSPP 中的变量类型从“日期”更改为“字符串”并将其转换为 R日期使用:
as.Date(MP.data$dob, format = "%d-%b-%Y")
希望我早点想到用简单的方法来做这件事!
【问题讨论】:
-
10/11/1946 真的导入为 11,489,040,000 吗?在它之前发生的其他日期之后,它会在 12,000,000,000 秒后导入,这似乎很奇怪。
-
谢谢本杰明,事实上它确实做到了,这就是为什么我认为这不仅仅是改变基础的问题。