2016-02-13 5 views
0

Я имею дело с лекарствами в базе данных претензий. Чтобы сделать это легче понять, позволяет принять следующий пример:proc транспонировать перед слиянием? занимающихся лекарствами в базе данных претензий

patients id dx1 
 
1    224 
 
2    323 
 
3    432 
 
4    423 
 
    
 

 

 
dataset 2 
 
patients id date    med_id 
 
1   10/12/2005   54678 
 
1   01/2/2005   09849 
 
1   05/04/2004 
 
1 
 
2 
 
2 
 
2 
 
3 
 
4 
 
4 
 
4 
 
4

Мой вопрос о слиянии двух наборов данных. Первое имеет одно наблюдение за идентификатор, второе - от 1-200 или более на идентификатор. Каков наилучший способ объединить оба данных, перенесете ли вы транспонирование перед объединением двух наборов данных?

+0

Что вы хотите, чтобы это было после слияния? – Ludwig61

+0

Я хочу, чтобы все пациенты из набора данных 1 (осталось слить по идентификатору пациента), но в то же время я хочу иметь возможность держать все строки на одного пациента в наборе данных 2, поэтому в основном это будет выглядеть как набор данных 2, за исключением того, что я сохраняю id, которые отображаются только в наборе данных1. –

ответ

0

Это будет полное внешнее соединение - ни одна строка не будет удалена с каждой стороны.

Proc sort data=d1 ; 
    By patient_id ; 
Run ; 

Proc sort data=d2 ; 
    By patient_id ; 
Run ; 

Data d3 ; 
    Merge d1 d2 ; 
    By patient_id ; 
Run ; 

Если вы хотите, левое внешнее соединение - все строки из d1 и только их матч, если таковые имеются, от d2 - использовать этот шаг данных вместо этого.

Data d3 ; 
    Merge d1 (in=in1) d2 ; 
    By patient_id ; 
    If in1 ; 
Run ; 
Смежные вопросы