R 通过memisc从SPSS便携文件转换导入的日期

R 通过memisc从SPSS便携文件转换导入的日期,r,spss,R,Spss,我已经教自己使用R大约6个月了,我发现当我在网上找不到解决方案时,这要么是一个模糊的问题,要么很明显没有人会问 我想这是后者 基本上,我通过R的memisc包导入了一个SPSS文件,使用: misc.MP.data <- as.data.frame( as.data.set( spss.portable.file("SPSS data.por"))) 但愿我早就想到用简单的方法做这件事 我不知道为什么,但你约会的起源似乎是1991-02-0219:24:48 EST。我是怎么决定的 我将

我已经教自己使用R大约6个月了,我发现当我在网上找不到解决方案时,这要么是一个模糊的问题,要么很明显没有人会问

我想这是后者

基本上,我通过R的memisc包导入了一个SPSS文件,使用:

misc.MP.data <- as.data.frame(
as.data.set(
spss.portable.file("SPSS data.por")))

但愿我早就想到用简单的方法做这件事

我不知道为什么,但你约会的起源似乎是
1991-02-0219:24:48 EST
。我是怎么决定的

我将您的已知日期转换为
POSIXct
对象

dt <- c("23/11/1946", "11/12/1946", "18/12/1946")
dt <- as.POSIXct(dt, format = "%d/%m/%Y")

dt我不知道为什么,但你约会的时间似乎是
1991-02-02 19:24:48东部时间
。我是怎么决定的

我将您的已知日期转换为
POSIXct
对象

dt <- c("23/11/1946", "11/12/1946", "18/12/1946")
dt <- as.POSIXct(dt, format = "%d/%m/%Y")

dt请记住,便携文件格式已被弃用,并且不支持统计的所有功能。它不支持Unicode模式或长变量名。如果可以控制数据的保存方式,请使用提供的许多其他格式之一

SPSS中的日期存储为浮点数,其值为1582年10月14日以来的秒数

我不知道spss.portable.file如何处理日期值,但是文档没有提到使用文件中的格式信息,这是知道它是日期值的唯一方法

我尝试过,导出一个已知的sav文件,其中包含一个日期变量,该变量的值在您发布的可移植范围内,并使用上述代码读取,原始数字与您报告的不匹配,即使是正值,因此我会对数据持谨慎态度

但后来我尝试了使用已知来源的asPOSIXct转换,如下所示

as.POSIXct(dta$bdate, origin = "1582-10-15") 

数字是一致的。请注意,起始日期是10月15日,而不是14日。如果日期可能包含时间组件,则可能需要为
asPOSIXct

指定
tz
参数。请记住,便携文件格式已被弃用,并且不支持所有统计特性。它不支持Unicode模式或长变量名。如果可以控制数据的保存方式,请使用提供的许多其他格式之一

SPSS中的日期存储为浮点数,其值为1582年10月14日以来的秒数

我不知道spss.portable.file如何处理日期值,但是文档没有提到使用文件中的格式信息,这是知道它是日期值的唯一方法

我尝试过,导出一个已知的sav文件,其中包含一个日期变量,该变量的值在您发布的可移植范围内,并使用上述代码读取,原始数字与您报告的不匹配,即使是正值,因此我会对数据持谨慎态度

但后来我尝试了使用已知来源的asPOSIXct转换,如下所示

as.POSIXct(dta$bdate, origin = "1582-10-15") 

数字是一致的。请注意,起始日期是10月15日,而不是14日。如果日期可能有时间成分,您可能需要指定
tz
参数,以
asPOSIXct

1946年11月10日是否真的导入为11489040000?这似乎很奇怪,当它发生之前,它会在其他日期之后导入12000000000秒。感谢Benjamin,事实上它确实导入了。这就是为什么我认为这不仅仅是一个改变基数的问题。1946年11月10日真的导入为11489040000吗?这似乎很奇怪,当它发生之前,它会在其他日期之后导入12000000000秒。感谢本杰明,事实上它确实导入了。这就是为什么我认为这不仅仅是一个改变基数的问题。非常感谢本杰明!我真的很感激。非常感谢你,本杰明!我真的很感激。
as.POSIXct(dta$bdate, origin = "1582-10-15")