2016-08-18 5 views
0

Ich habe zwei Datensätze.SAS-Datensätze zusammenführen

DATASET: A

EE_ID  PRJ_CD 
100055 406 
100055 475 
100055 492 
300028 475 

DATASET: B

EE_ID  SSN    EMP_CD 
100055 0100055   E 
300028 0300028   E 

I & sortiert fusionieren die beiden oben genannten Datensätze von EE_ID.

DATA FINAL;     
    MERGE A B;     
    BY EE_ID;     

    IF A THEN OUTPUT;      
RUN;  

Output:

EE_ID   PRJ_CD SSN   EMP_CD 
100055   475       
100055   492       
100055   406  0100055  E  
300028   475  0300028  E 

SSNEMP_CD und wird immer nur eine Zeile aufgefüllt, und die verbleibenden zwei Reihen leer sind für die EE_ID = 100055.

Meine Erwartung ist: -

EE_ID   PRJ_CD SSN   EMP_CD             
100055   475  0100055  E    
100055   492  0100055  E    
100055   406  0100055  E  
300028   475  0300028  E 

Jede Hilfe würde geschätzt.

Danke!

+1

'IF A THEN OUTPUT;' ?? 'A' wird die ganze Zeit leer sein und mit diesem Code sollten Sie überhaupt keine Ergebnisse haben. Bitte formatieren Sie auch Text in Ihrem Problem. Es ist nicht so schwer. – fl0r3k

Antwort

-1

Ihr Code ist für Ihre Beispieldaten in Ordnung.

data a; 
    input ee_id prj_cd ; 
cards; 
100055 406 
100055 475 
100055 492 
300028 475 
; 

data b ; 
    input ee_id ssn emp_cd $; 
cards; 
100055 0100055   E 
300028 0300028   E 
; 

data want; 
    merge a(in=in1) b ; 
    by ee_id; 
    if in1; 
run; 

Ihre realen Daten wahrscheinlich bereits SSN und EMP_CD auf der A-Datensatz. Sie können sie in der Zusammenführungs-Anweisung ablegen, wenn Sie sie nicht schon früher entfernen können.

data want; 
    merge a(in=in1 drop=ssn emp_cd) b ; 
    by ee_id; 
    if in1; 
run; 
1

Da fl0r3k oben erwähnt, würde der Code, den Sie geliefert haben, nicht funktionieren, Sie würden keine Ergebnisse erhalten.

Sobald Sie A und B von EE_ID sortiert haben könnten Sie den folgenden Code verwenden:

data final; 
merge a b; 
    by ee_id; 
    run; 

Ich bin nicht sicher, was Ihre Absicht mit IF A THEN OUTPUT; ist Wenn Sie mehrere Datensätze in B haben als in Ihrem Beispiel angezeigt und will nur Datensätze in A enthalten dann versuchen

data final; 
merge a (in=a) b; 
    by ee_id; 
    if a ; 
    run; 

Basierend auf Ihrem Beispiel A und B Datensätze über Sie werden die gleichen Ergebnisse aus der Benutzung jeden Code erhalten.