2015-03-26 2 views
0

Я новичок в SAS, у меня есть два набора данных, как следующие,данных SAS сливаться для существования

data datasetA; 
    input a $1; 
    datalines; 
1 
2 
3 
4 
5 
6 
7 
; 
run; 

data datasetB; 
    input a $1; 
    datalines; 
1 
3 
5 
7 
; 
run; 

Если появится B, то мой желаемый результат должен быть

1 Y 
2 N 
3 Y 
4 N 
5 Y 
6 N 
7 Y 

ответ

4

Это может быть achived с помощью по меньшей мере, двумя способами:

  • merge через data step или
  • left join с proc sql.

В настоящем pdf-формате сравнивается pros and cons of merge versus sql in sas.

Поскольку rbet показал вам, как это сделать с шагом слияния, я покажу вам, как это сделать с помощью proc sql.

proc sql; 
    create table work.result as 
    select t1.a, case when t2.a is not missing then 'Y' else 'N' end as exists 
    from work.datasetA t1 
    left join work.datasetB t2 on t1.a = t2.a order by t1.a; 
4
data _a; 
format a 3.; 
do i = 1 to 7; 
a = i; 
output; 
end; 
drop i; 

data _b; 
format b 3.; 
do i = 1 to 7 by 2; 
b = i; 
output; 
end; 
drop i; 
run; 

data _c; 
merge _a(in=_a) _b(in=_b rename=(b=a)); 
format St $2.; 
if _a and _b then St = 'Y'; 
else St = 'N'; 
by a; 
run; 

I предложит вам отправить SAS merge или SAS proc sql join для ознакомления с основными понятиями.

Смежные вопросы