2015-02-23 2 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

+0

конвертировать в 24 часа времени и вычитать. но серьезно, этот вопрос будет закрыт, если вы не нашли времени, чтобы правильно объяснить, что вы пытаетесь выполнить, и дать лучшие примеры. и, как сказано выше, показать, с чем вы пытались или в настоящее время боретесь. – badfilms

+0

какой язык? –

ответ

2

Все, что вам нужно сделать, это создать новый столбец с именем SleepHour, основанный на том, когда дети ложатся спать и когда они просыпаются.

Используйте данные вам, то SleepHour = Time2 - Time1 .Suppose как time2 и time1 в формате 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; 
Смежные вопросы