Я пытаюсь найти количество часов между отправлением (выездом) и следующим визитом (входом) в SAS.
Мой набор данных (набор данных SAS) выглядит так. Переменные In и Out являются переменными даты и времени.
ID In1 In2 Out1 Out2
-----------------------------------------------------------------
1 14AUG12:10:27 16AUG12:08:38 14AUG12:16:25 16AUG12:09:38
2 08AUG12:14:41 09AUG12:07:37 08AUG12:22:14 09AUG12:08:58
3 08AUG12:08:54 09AUG12:23:45 08AUG12:14:04 10AUG12:02:55
4 27AUG12:06:41 27AUG12:10:42 27AUG12:09:45 27AUG12:12:17
5 07AUG12:23:16 09AUG12:22:13 07AUG12:23:16 10AUG12:15:59
Я хочу рассчитать разницу между In2 и Out1, то есть я хочу In2 - Out1 в часах (разница между тем, когда они вышли, и когда они снова вернулись). Я решил сделать это по циклу, так как у меня много записей. Я варьировал входы и выходы для всех записей (я не знаю этого заранее). В этом конкретном наборе данных у меня есть до In33 и Out33.
Мой код
data counts;
set mydata;
array in _numeric_;
array out _numeric_;
do k = 1 to 32;
time = intck('hour', out[k], in[k+1]);
if time >= 0 and time<= 72 then output;
end;
run;
Моя проблема здесь заключается в точности количества часов, которые я получаю в качестве вывода. Для этих конкретных данных, показанных выше, я получаю время 46, 17, 39, 4 и 52 часа соответственно для ID 1, 2, 3, 4 и 5. Но время должно быть 40, 9, 33, 1 и 47 часов. соответственно для ID 1, 2, 3, 4 и 5. Я не уверен, что я здесь делаю неправильно. Я буду признателен за вашу помощь.