2011-01-20 6 views
3

Je suis en train d'étudier la fusion de données SAS, et trouve l'exemple suivantde "fusion de données" dans SAS

data newdata; 
merge yourdata (in=a) otherdata (in=b); 
by permno date; 

Je ne sais pas quoi faire "(en = a)" et « (in = b) " signifier? Merci.

Répondre

7

yourdata(in=a) crée une variable de drapeau dans le vecteur de données de programme appelé 'a' qui contient 1 si l'enregistrement provient de yourdata et 0 s'il ne l'est pas. Vous pouvez ensuite utiliser ces variables pour effectuer des opérations conditionnelles basées sur la source de l'enregistrement.

Il pourrait être plus facile à comprendre si vous avez vu

data newdata; 
merge yourdata(in=ThisRecordIsFromYourData) otherdata(in=ThisRecordIsFromOtherData); 
by permno date; 
run; 

Supposons que les dossiers de yourdata devaient être manipulés dans cette étape, mais pas ceux de Autres données, vous pouvez faire quelque chose comme

data newdata; 
merge yourdata(in=ThisRecordIsFromYourData) otherdata(in=ThisRecordIsFromOtherData); 
by permno date; 
if ThisRecordIsFromYourData then do; 
    * some operation here for yourdata records only ; 
end; 
run; 

Une utilisation évidente pour ces variables est de contrôler le type de 'fusion' qui se produira, en utilisant les instructions if. Par exemple, if ThisRecordIsFromYourData and ThisRecordIsFromOtherData; fera en sorte que SAS n'inclura que les lignes qui correspondent aux variables by des deux ensembles de données d'entrée (comme une jointure interne).

+1

Il convient également de noter que ces variables d'indicateur ne sont pas conservées dans l'ensemble de données en cours de création. Si vous voulez les garder, j'ai normalement créé des variables supplémentaires comme ceci: a1 = a; b1 = b; puis reportez-vous à a1 et b1 dans l'ensemble de données en sortie. –

Questions connexes