Определить шаблон в столбце во времени - PullRequest
0 голосов
/ 18 декабря 2018

Вот мои данные.

enter image description here

Каждая запись / строка документирует положение пациента и дату и время документа.Таким образом, кроме первой записи за день, мы можем рассчитать время, в течение которого позиция сохранялась с момента последней записи.Цель состоит в том, чтобы пометить записи, которые указывают, что пациент находился в одном из положений: «вправо», «назад», «влево» в течение как минимум 2 часов в тот же день.Красные строки, которые должны быть помечены.Чтобы сделать это, я думаю, мне нужно создать столбец, в котором будет время, когда в последний раз документировалась другая позиция.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

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

data want;
set have; 
by ID position NOTSORTED;
retain start_time;

if first.position then start_time = observation_time;
duration = observation_time - start_time;
if duration > 2*60*60 then flag=1; *time is stored in seconds, so 2 hours * 60minutes * 60 seconds per hour;

run;

Не проверено, потому что нет данных.

0 голосов
/ 19 декабря 2018

Вы вычисляете продолжительность пробега для position.По мере прохождения данных вам нужно будет отслеживать position и start прогона.Отслеживание можно выполнить с помощью переменной retain ed.

data want;
  set have;
  by patientid date time;  * add date and time to by statement so an error will log if the data is not in the required order;

  if first.patientid then do;
    run_position = position;
    run_start = dhms (date,0,0,0) + time;
    retain run_position run_start;
  end;

  if position = run_position then do;
    hours_duration = intck ('hour', run_start, dhms(date,0,0,0) + time, 'continuous');
  end;
  else do;
    * new run start;
    run_position = position;
    run_start = dhms (date,0,0,0) + time;
    hours_duration = 0;
  end;

  flag_ge2hr = hours_duration >= 2;
run;
...