SPSS日期时间变量基础

作者:Ruben Geert van den Berg 发表于 SPSS Date & Time Variables

如果你理解一些基本概念,那么使用SPSS日期时间变量并不难。本教程将带你了解这些概念。如果你想跟着教程一起操作,可以下载并打开 hospital.sav 文件。

SPSS数据视图中的日期时间变量

SPSS日期时间变量 - 是什么?

SPSS日期时间变量是用于存储 公元1582年到指定日期和时间之间的秒数 的变量。SPSS日期时间值可能看起来很复杂(包含月份字母和破折号),但它们的真实值不过是巨大的数字。可以通过指定 f 格式来显示实际值,其 syntax (语法)formats exit_moment(f1).

SPSS F格式的日期时间值

请注意,这不会以任何方式更改值;它们只是以不同的方式显示。不要被它们不寻常的外观所迷惑:SPSS日期时间变量是 numeric variables (数值变量) 。这意味着所有标准的 numeric functions (数值函数) 都可以用于它们。但是,对于SPSS日期时间变量的计算,我们主要使用SPSS date functions (日期函数)

SPSS日期时间格式

我们刚刚看到SPSS日期时间值实际上是巨大的秒数。要将它们显示为带有时间的正常日期,请将其 format (格式) 设置为以下两种格式之一。

变量类型 格式系列 格式 (示例) 显示为
Numeric (数值) Datetime (日期时间) Datetime17 8-Jan-2013 18:34
Numeric (数值) Datetime (日期时间) Datetime20 8-Jan-2013 18:34:05

Date (日期), Time (时间) 和 Datetime (日期时间)

SPSS date variables (日期变量)time variables (时间变量) 和日期时间变量之间的关系可以从它们定义的快速比较中看出:

  • SPSS date variables (日期变量) 包含1582年到给定日期的午夜(00:00:00)之间的秒数;
  • SPSS time variables (时间变量) 包含从某天午夜(00:00:00)到给定时间的秒数;
  • SPSS datetime variables (日期时间变量) 包含1582年到指定日期和时间之间的秒数。

由此我们可以得出结论,SPSS日期值可以看作是具有00:00:00时间成分的日期时间值。运行 formats entry_date(datetime20). 可以证实这一点;SPSS日期值可以正确地显示为datetime20,因为它们的实际值与日期时间值非常相似。

SPSS日期时间格式的日期值

反之,日期时间值也可以显示为日期。如果这样做,请记住时间成分不会因为不再显示而消失。

从Date (日期) 和 Time (时间) 创建 SPSS Datetime (日期时间)

此时我们可以看到,SPSS 日期时间值只是日期值和时间值的总和。运行以下语法可以证实这一点。

***1. Date (seconds) + time (seconds) = datetime (seconds).  
**  
compute entry_moment = entry_date + entry_time.  
exe.  
  
***2. Show seconds as normal date with time.  
**  
formats entry_moment(datetime20).

将Date (日期) 和 Time (时间) 组合成Datetime (日期时间) 将日期和时间组合成日期时间 - 真的就这么简单。

从 SPSS Datetime (日期时间) 中提取 Date (日期)

理解日期时间变量的SPSS用户很少会 - 如果曾经 - 想要提取它们的日期成分。为了完整起见,官方方法是使用 DATE.DMY 创建日期变量。我们通过将 XDATE 应用于日期时间变量来获得所需的日、月和年成分。请注意,月份中的某一天由XDATE.MDAY捕获;XDATE.DAY在SPSS中无效。在下面的语法中,我们首先创建日、月和年作为中间变量,然后将它们与DATE.DMY组合。可以通过将XDATE替换为DATE.DMY来跳过此步骤,我们将在从日期时间值中提取时间值时进行演示。

***1. Extract date, month, and year into new variables.  
**  
compute day = xdate.mday(exit_moment).  
compute month = xdate.month(exit_moment).  
compute year = xdate.year(exit_moment).  
exe.  
  
***2. Compute date from (extracted) day, month and year components.  
**  
compute exit_date = date.dmy(day,month,year).  
exe.  
  
***3. Display as normal date values.  
**  
formats exit_date(date11).

从日期时间值中提取日期值的非官方方法是使用SPSS TRUNC 函数;我们通过将它们向下舍入到86400秒(一天)来删除日期时间值的时间部分。

***1. Delete exit_date before recomputing it.  
**  
delete variables exit_date.  
  
***2. Extract date from datetime by TRUNC function.  
**  
compute exit_date = trunc(exit_moment,86400).  
exe.  
  
***3. Show date in date format.  
**  
formats exit_date(date11).

从 SPSS Datetime (日期时间) 中提取 Time (时间)

SPSS时间值可以通过 TIME.HMS 从小时、分钟和秒创建。同样,这些成分可以使用XDATE从日期时间值中提取,如下面的语法所示。

***1. Compute time values by combining hour, minute, second components
extracted from datetime values.  
**  
compute exit_time =
time.hms(xdate.hour(exit_moment),xdate.minute(exit_moment),xdate.second(exit_moment)).  
exe.  
  
***2. Show seconds as normal times.  
**  
formats exit_time(time8).

这里一个更快的替代方法是使用SPSS MOD 函数;我们基本上是通过从日期时间值中删除所有86400倍(一天有86400秒)来丢弃日期成分。

***1. Remove date component from datetime values.  
**  
compute exit_time = mod(exit_moment,86400).  
exe.  
  
***2. Show seconds as normal times.  
**  
formats exit_time(time8).