将SPSS文件读入R,日期数据格式错误,并生成更多变量

0 r

我尝试过使用spss.getHmisc 的

\n\n
    install.packages("Hmisc")\n    library(Hmisc)\n    mydata <- spss.get("C:\\\\good good study\\\\comscore\\\\purchase.sav", use.value.labels = TRUE)\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出显示警告消息,如下所示:

\n\n
> mydata <- spss.get("C:\\\\good good study\\\\comscore\\\\purchase.sav", use.value.labels = TRUE)\nWarning messages:\n1: In read.spss(file, use.value.labels = use.value.labels, to.data.frame = to.data.frame,  :\nC:\\good good study\\comscore\\purchase.sav: Unrecognized record type 7, subtype 14 encountered in system file\n2: In read.spss(file, use.value.labels = use.value.labels, to.data.frame = to.data.frame,  :\nC:\\good good study\\comscore\\purchase.sav: Unrecognized record type 7, subtype 18 encountered in system file\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在 spss 中的初始日期如下\xef\xbc\x9a\n spss 中的日期是正确的

\n\n

然而\xef\xbc\x8c当我在R中使用spss.get时,日期的数据变得乱码:\n date在R中变得乱码

\n

djh*_*rio 5

这是您在 R 中看到的某个特定时间的秒数。您可以将其转换为日期或时间。例如:

z <- c(10485849601, 10477641600, 10561104000, 10562745600)
as.POSIXct(z, origin="1582-10-14", tz="GMT")
Run Code Online (Sandbox Code Playgroud)

"1582-10-14"的值origin取自 SPSS Statistics Base 手册:

在内部,所有日期和时间格式值都存储为秒数:日期格式(例如,DATE、ADATE、SDATE、DATETIME)存储为自 1582 年 10 月 14 日以来的秒数;时间格式(TIME、DTIME)存储为表示时间间隔的秒数(例如,10:00:00 在内部存储为 36000,即 60 秒 x 60 分钟 x 10 小时)。

https://www.ibm.com/support/knowledgecenter/en/SSLVMB_23.0.0/spss/base/syn_date_and_time_date_time_formats.html

对于时间值来说,最好的选择可能是使用chron库。参见示例:

require(chron)
y <- c(58130, 10981)
chron(times. = y / (24*60*60))
Run Code Online (Sandbox Code Playgroud)

您是否尝试过haven读取 SPSS 数据的软件包?