SPSS日期时间变量基础
作者:Ruben Geert van den Berg 发表于 SPSS Date & Time Variables
如果你理解一些基本概念,那么使用SPSS日期时间变量并不难。本教程将带你了解这些概念。如果你想跟着教程一起操作,可以下载并打开 hospital.sav 文件。
SPSS日期时间变量 - 是什么?
SPSS日期时间变量是用于存储 公元1582年到指定日期和时间之间的秒数 的变量。SPSS日期时间值可能看起来很复杂(包含月份字母和破折号),但它们的真实值不过是巨大的数字。可以通过指定 f
格式来显示实际值,其 syntax (语法) 是 formats exit_moment(f1).
。
请注意,这不会以任何方式更改值;它们只是以不同的方式显示。不要被它们不寻常的外观所迷惑: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,因为它们的实际值与日期时间值非常相似。
反之,日期时间值也可以显示为日期。如果这样做,请记住时间成分不会因为不再显示而消失。
从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).
将日期和时间组合成日期时间 - 真的就这么简单。
从 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).