如何计算每条记录的睡眠小时数

How to calculate number of hours of sleep for each record

我有每个孩子的数据集,每个孩子上床睡觉的时间以及他们早上醒来的时间。我要计算睡眠小时数

下面只是一个示例数据:

id          time1(kids go bed)          time2(kids wake up time)   
101        12:00(am)                    5:00(pm)    
102        3:00(am)                    9:30(am)    
103        7:00(pm)                    6:00(am)    
104        4:15(am)                    2:00(pm)

如您所见,我有不同的时间组合 ex:they 清晨 (AM) 上床睡觉,他们在第二天下午晚些时候 (PM) 醒来。

如果您有任何问题,请告诉我?

您需要做的就是根据孩子上床睡觉和醒来的时间创建一个名为 SleepHour 的新列。

使用你的数据,然后SleepHour = Time2 - Time1。假设time2time1都是datetime格式。

data WANT;
set HAVE;
SleepHour = (Time2 - Time1)/3600; /* seconds to hours */
run;

但我猜原始数据可能只包含 time 部分而没有 date 部分。所以你需要阐明你想如何计算no. of hours

好吧,我们假设孩子每天的睡眠时间不会超过 24 小时。那么你需要一个if条件来计算no of hours.

data WANT;
set HAVE;
if hour(time2) ge hour(time1) then SleepHour = (Time2 - Time1)/3600; 
else SleepHour = (Time2 + 24*3600 - Time1)/3600; 
run;