2015-02-23 78 views
-4

我有一个数据集为每个孩子,当每个孩子去床上,当他们在早上醒来。我想计算的睡眠小时数如何计算每条记录的睡眠小时数

下面是只是一个简单的数据:

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) 

正如你可以看到我有恩的不同时间的组合:他们去睡觉凌晨( AM),第二天下午傍晚醒来(PM)。

让我知道如果您有任何问题吗?

+0

您到目前为止尝试过什么?使用StackOverflow,您需要先尝试自己解决问题,并显示您尝试过的内容并解释您遇到的问题。 – Dijkgraaf 2015-02-23 23:20:10

+0

转换为24小时制并减去。但是,严肃地说,如果你没有花时间来正确地解释你正在努力完成的任务并给出更好的例子,那么这个问题就会被关闭。正如上面所说的,显示你已经尝试或正在挣扎的东西。 – badfilms 2015-02-23 23:20:33

+0

哪种语言? – 2015-02-23 23:20:51

回答

2

您需要做的就是创建一个名为SleepHour的新列,这个列基于孩子们什么时候睡觉和什么时候醒来。

使用你的数据,然后SleepHour = Time2 - Time1。同时假设time2time1datetime格式。

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;