о "слиянии данных" в SAS - PullRequest
       5

о "слиянии данных" в SAS

3 голосов
/ 21 января 2011

Я изучаю слияние данных в SAS и нахожу следующий пример

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

Я не знаю, что означают "(in = a)" и "(in = b)"?Спасибо.

1 Ответ

7 голосов
/ 21 января 2011

yourdata(in=a) создает переменную флага в векторе данных программы, называемую «a», которая содержит 1, если запись из ваших данных, и 0, если это не так.Затем вы можете использовать эти переменные для выполнения условных операций на основе источника записи.

Возможно, вам будет легче понять, если вы увидели

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

Предположим, что записи из ваших данных должны бытьманипулируя на этом шаге, но не теми, что из других данных, вы могли бы затем сделать что-то вроде

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;

Очевидное использование этих переменных - это контроль типа слияния, используя операторы if.Например, if ThisRecordIsFromYourData and ThisRecordIsFromOtherData; заставит SAS включать только строки, совпадающие по переменным by из обоих наборов входных данных (как внутреннее соединение).

...