SPSS 中的时间(小时/分钟/上午或下午)变量

问题描述 投票:0回答:1

我正在尝试计算一个人睡眠的时间长度。我的数据集包含以下变量:

SleepHour
SleepMinute
SleepAM_PM
WakeHour
WakeMinute
WakeAM_PM
。小时变量的范围是 1-12,分钟变量的范围是 0-59,AM/PM 变量是二进制的(1 = AM;2 = PM)。

我尝试了以下代码,结果很接近,但它没有考虑到分钟是按 60 分制来衡量的事实,因此晚上 11:00 睡觉并早上 6:30 起床的人被列为 7.70睡眠时间,虽然应该是 7.30。

* Calculate time spent asleep with decimal places.
COMPUTE SleepMilitaryTime = 0.
COMPUTE WakeMilitaryTime = 0.
COMPUTE SleepDuration = 0.

* Convert sleep time to military time.
IF (SleepAM_PM = "PM" & SleepHour < 12) SleepMilitaryTime = (SleepHour + 12) * 100 + SleepMinute.
IF (SleepAM_PM = "AM" & SleepHour = 12) SleepMilitaryTime = SleepMinute.
IF (SleepAM_PM = "AM" & SleepHour < 12) SleepMilitaryTime = SleepHour * 100 + SleepMinute.

* Convert wake time to military time.
IF (WakeAM_PM = "PM" & WakeHour < 12) WakeMilitaryTime = (WakeHour + 12) * 100 + WakeMinute.
IF (WakeAM_PM = "AM" & WakeHour = 12) WakeMilitaryTime = WakeMinute.
IF (WakeAM_PM = "AM" & WakeHour < 12) WakeMilitaryTime = WakeHour * 100 + WakeMinute.

* Calculate sleep duration with decimal places.
IF (WakeMilitaryTime >= SleepMilitaryTime) SleepDuration = (WakeMilitaryTime - SleepMilitaryTime) / 100.
IF (WakeMilitaryTime < SleepMilitaryTime) SleepDuration = ((2400 + WakeMilitaryTime) - SleepMilitaryTime) / 100.

EXECUTE.

我还尝试使用 SPSS 日期和时间向导,但我认为只有当时间为 24 小时制时才有效,而这些则不然。

如果您知道如何解决这个问题,我将非常感激!!

time spss date-arithmetic
1个回答
0
投票

没关系!我通过创建一个将小时数转换为 24 小时制的临时变量解决了这个问题(废话!)。将代码粘贴到此处以供将来的读者使用:

COMPUTE SleepHour = -999.
IF (Sleep_AM_PM = 2) SleepHour24 = (SleepHour + 12).
IF (Sleep_AM_PM = 1 & SleepHour = 12) SleepHour24 = 0.
IF (Sleep_AM_PM = 1 & SleepHour< 12) SleepHour24 = SleepHour.
missing values SleepHour24 (-999).
execute.

*Create variable in time format.
COMPUTE  SleepTime=TIME.HMS(SleepHour24, SleepMinute, 0). 
VARIABLE LEVEL  SleepTime(SCALE). 
FORMATS  SleepTime (TIME5). 
VARIABLE WIDTH  SleepTime(5). 
execute.
© www.soinside.com 2019 - 2024. All rights reserved.