Как объединить строки в одном наборе данных с некоторыми дублирующимися значениями? - PullRequest
0 голосов
/ 08 мая 2019

Я анализирую набор данных медицинской карты, где пациенты обследовались на ИППП в 4 разных временных точках. Диспетчер данных создал линию для каждого пациента на ИППП для каждого периода времени. Я хочу объединить набор данных, чтобы в каждой временной точке была указана одна строка для каждого диагностированного ИППП.

Я создал новые переменные для захвата каждой ИППП, которая будет указана в переменной Dx, но я не могу понять, как объединить данные в одном и том же наборе данных, чтобы в каждый момент времени была только одна на пациента.

data dx; 
set dx; 
if dx='ANOGENITAL WARTS (CONDYLOMATA ACUMINATA)' then MRWarts=1;
if dx='CHLAMYDIA' then MRCHLAMYDIA=1;
if dx='DYSPLASIA (ANAL, CERVICAL, OR VAGINAL)' then MRDYSPLASIA=1;
if dx='GONORRHEA' then MRGONORRHEA=1;
if dx='HEPATITIS B (HBV)' then MRHEPB=1;
if dx='HUMAN PAPILLOMAVIRUSES (HPV)-ANY MANIFESTATION' then MRHPV=1;
if dx='PEDICULOSIS PUBIS' then MRPUBIS=1;
if dx='SYPHILIS' then MRSYPHILIS=1;
if dx='TRICHOMONAS VAGINALIS' then MRTRICHOMONAS=1;
run;

Изображение структуры данных, которую я ищу

1 Ответ

0 голосов
/ 08 мая 2019

взяв образец набора данных, который вы предоставили на изображении, вы можете использовать простое транспонирование для желаемого результата.

data have;
input Pt_ID interval_round DX $10.;
datalines;
4 1 HIV
4 1 Warts
3 1 HIV
5 2 Chlamydia
;
run;

proc sort data=have1; by Pt_Id; run;

proc transpose data=have1 out=want(drop=_NAME_);
by Pt_Id;
id Dx;
var interval_round;
run;

proc print data=want; run;

Теперь этот код создаст все переменные, кроме interval_round, скажем, к примеру - пациент был обследован на ВИЧ в 1-м раунде и бородавок в 2-м. Технически у него должна быть только одна строка ... так как бы вы представляли тогда interval_round?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...