Подсчитать время сна
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | * Считаем продолжительность сна. (даты в данных не указаны). * Автор: Raynald Levesque. * Допустим, id - номер наблюдения, sleetime - время отхода ко сну в 12-часовом формате, sampm - указание на период до полудня или после полудня (AM/PM), waketime - время пробуждения, wampm - указание на период пробуждения. NEW FILE. DATA LIST LIST /id(F8) Sleetime(TIME5) sampm(A2) waketime(TIME5) wampm(A2). BEGIN DATA. 1 12:00 PM 11:00 AM 2 2:00 AM 10:00 AM 3 4:00 AM 1:00 PM 4 11:30 PM 12:30 PM 5 12:30 AM 12:45 PM END DATA. LIST. * В нашей записи 12:30 AM означает отход ко сну в половине первого ночи. COMPUTE timebeg=12+sleetime/3600. IF sampm='AM' AND (XDATE.HOUR(sleetime)<>12) timebeg=timebeg+12. COMPUTE timeend=24+waketime/3600. IF wampm='PM' AND (XDATE.HOUR(waketime)<>12) timeend=timeend+12. COMPUTE dur1=timeend-timebeg. * Здесь переменная dur1 - числовая, т.е. 10.25 означает 10 часов 15 минут) * Если нужен ответ в формате времени (HH:MM), поступаем так. COMPUTE dur2=dur1*3600. FORMATS dur2(TIME5). EXECUTE. NEW FILE. DATA LIST LIST /id(F8) Sleetime(DTIME8) waketime(DTIME8). BEGIN DATA. 1 1:00:00 1:11:00 2 1:2:00 1:10:00 3 1:4:00 1:1:00 4 0:11:30 1:12:30 5 1:00:30 1:12:45 END DATA. LIST. * Вариант 2. * Здесь время заведено в формате DTIME. В данном формате * 0 21:00 означает 9 PM в день перед началом исследования. * 1 00:30 означает половину первого ночи. * 1 01:00 означает 1 AM в день исследования. * 1 12:30 означает 12:30 PM в день исследования. COMPUTE dur3=waketime-Sleetime. FORMAT dur3 (TIME5). *Здесь dur3 - продолжительность в часах и минутах (10:30 это 10 часов и 30 минут). EXECUTE. |
Related pages
...