SAS: объединить различные наборы данных, сохраняя имена отдельных таблиц данных

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

Например, начальными наборами данных являются "my_data_1", "abc" и "xyz", каждый из которых содержит столбцы "var_1" и "var_2".

Я хочу получить "окончательный" набор данных с столбцами "var_1", "var_2" и "var_3". где "var_3" содержит значения "my_data_1", "abc" или "xyz" в зависимости от того, из какого набора данных была выбрана определенная строка.

(У меня есть комплексное решение для этого, то есть добавление имени таблицы в качестве дополнительной переменной во всех отдельных наборах данных. Но у меня есть около 100 таблиц, которые нужно уложить, и я ищу эффективный способ сделать это.)

Ответ 1

Используйте инструкцию in, когда вы устанавливаете каждый набор данных:

data final;
 set my_data_1(in=a) abc(in=b) xyc(in=c);
 if a then var_3='my_data_1';
 if b then var_3='abc';
 if c then var_3='xyz';
run;

Ответ 2

Если у вас есть SAS 9.2 или новее, у вас есть опция INDSNAME http://support.sas.com/kb/34/513.html

Итак:

data final;
format dsname datasetname $20.; *something equal to or longer than the longest dataset name including the library and dot;
set my_data_1 abc xyc indsname=dsname;
datasetname=dsname;
run;