У меня довольно запутанный набор данных с более чем 200 записями (участников) и множеством столбцов, обозначающих лечение, на котором был участник, а также дату начала и дату окончания соответствующего лечения.
Ниже приведен пример небольшой части моего набора данных, где PATID - это идентификатор участника, x1DRG - препарат (1 или 2), x1SDT - дата, когда они начали принимать этот препарат, а x1EDT - дата, когда они остановились. То же самое для остальных столбцов.
Так, например, для первой записи x1DRG = 2 (участник принимал препарат 2), начиная с X1SDT = 11/6/2019, без x1EDT (имеется в виду, что он в настоящее время его принимает), x2DRG по-прежнему 2, препарат был начат в x2SDT = 7/7/2016, препарат был прекращен в x2EDT = 1/9/2017, и наконец x3DRG (все еще 2) был снова запущен в x3SDT = 1/9/2017 и закончился в x3EDT = 6/5 / 2018.
То, что я хочу сделать, это посмотреть, сколько участников остановили исследуемый препарат, основываясь на этих датах начала и окончания. Таким образом, в конечном итоге я получу набор данных SAS с идентификатором участника, столбец STOP с 1 или 0, в зависимости от того, остановил ли он препарат или нет, столбец DRUG с наркотиком, который был остановлен (1 или 2), столбец с CURRENT. Наркотик он включен, если он не остановился, и столбец с датой остановки, когда он остановил препарат, если он остановил его. Так, например, для PATID 1 столбец STOP будет равен 0 (не останавливать его), CURRENT DRUG будет равен 2, STOP DATE будет пустым, поскольку он все еще принимает лекарство 2. Для PATID 6 у нас будет STOP: 1 (он остановился), DRUG будет равно 1, CURRENT DRUG будет пустым (в настоящее время не принимается наркотик), DOP STOP будет 24.11.2009.
Я думал о том, чтобы транспонировать набор данных, а затем сделать что-то вроде: если для каждого участника самая старая конечная дата не сопровождается начальной датой, то это означает, что участник не прекратил лечение.
Однако проблема в том, что для некоторых участников (строки, выделенные красным цветом, интервалы 1, 7, 8, 9), как видно, последовательность дат начала и окончания не в хронологическом порядке. Например, для участника 1 самая старая дата начала в последовательности - x2SDT (12/7/2016), когда он впервые начал принимать препарат 2, затем он остановился на x2EDT (9 января 2017 г.), а затем снова начал на x3SDT ( 09.01.2017), остановился на x3EDT (05.06.2008) и, наконец, снова запустился на x1SDT (06.11.2017) и в настоящее время принимает препарат 2, так как x1EDT нет. Таким образом, в этом и многих других случаях x1SDT не соответствует самой старой дате, как и должно быть, поэтому вам нужно визуально проверить последовательность и выяснить, какой порядок правильный, и на основании этого решить, находится ли он еще на наркотике. или нет .. Теперь, учитывая, что у меня около 500 записей, я, очевидно, не хочу (и не имею времени) вручную go просмотреть все из них и принять решение. Я думал об этом уже несколько дней, но, к сожалению, я все еще на довольно начальном уровне c для начинающих с SAS и не понял, как решить эту проблему программно. Если у кого-нибудь есть пример кода / предложения для меня, я буду очень признателен!
Итак, я думаю о заключительном наборе данных, который я может получить что-то подобное, может быть? Хотя я не уверен, что это возможно, так или иначе, окончательный формат не должен иметь большого значения, пока я могу заставить программу дать мне то, что мне нужно.