Делай L oop и считай - PullRequest
       8

Делай L oop и считай

0 голосов
/ 30 января 2020

У меня есть набор данных, который выглядит следующим образом:

   Patient_MRN         DOV1_1         DOV2_1      DOV2_2       DOV2_3     DOV2_4 ... DOV2_200
   234532            01/16/2018     08/09/2018
   232536            01/01/2018     05/07/2018    06/07/2018   09/13/2019

Я хотел бы подсчитать, сколько раз переменная DOV2_ попадает в один календарный год переменной DOV1_1 по Patient_MRN. Так, например, для пациента «234532» будет 1, а для пациента «232536» будет 2 (05/07/2018, 06/07/2018).

Не уверен, что это Наиболее эффективный способ, но вариант, который я мог бы использовать для этого, состоит в том, чтобы вычесть переменные DOV2_ из DOV1_1, а затем сохранить только те выходные данные, которые меньше 365, а затем создать счетчик переменных, которые меньше 365.

Чтобы сделать это, я знаю, что мне нужно создать что-то вроде d oop l oop или Марко, но я не совсем уверен, с чего начать

1 Ответ

1 голос
/ 30 января 2020

Функция INTCK может рассчитывать интервалы даты и времени. Оператор DATA Step ARRAY позволяет ссылаться на переменные в виде массива;

Предполагать, что «в течение одного календарного года» означает интервал от DOV1_1 даты до следующей даты <1 год вперед. <code>INTCK с интервалом 'YEAR' и 'C' непрерывным методом вернет 0, если дата находится в пределах 1 года вперед.

data want;
  set have;
  array dates dov2_1-dov2_200;
  count = 0;
  do index = 1 to dim(dates);
    if intck('year', dov1_1, dates(index), 'C') = 0 then count + 1;
  end;
run;
...