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

时间:2015-02-23 23:16:01

标签: sas

我为每个孩子准备了一个数据集,当每个孩子上床睡觉和早上醒来时。我想计算睡眠时数

以下是一个示例数据:

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)

你可以看到我有不同的时间组合,他们在清晨(上午)睡觉,然后在第二天下午(PM)醒来。

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

1 个答案:

答案 0 :(得分:2)

您需要做的就是根据孩子上床睡觉和醒来时创建一个名为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;