Ответ 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;
Я пытаюсь объединить несколько наборов данных в SAS, и я ищу способ хранения информации об именах отдельных наборов данных в конечном наборе данных.
Например, начальными наборами данных являются "my_data_1", "abc" и "xyz", каждый из которых содержит столбцы "var_1" и "var_2".
Я хочу получить "окончательный" набор данных с столбцами "var_1", "var_2" и "var_3". где "var_3" содержит значения "my_data_1", "abc" или "xyz" в зависимости от того, из какого набора данных была выбрана определенная строка.
(У меня есть комплексное решение для этого, то есть добавление имени таблицы в качестве дополнительной переменной во всех отдельных наборах данных. Но у меня есть около 100 таблиц, которые нужно уложить, и я ищу эффективный способ сделать это.)
Используйте инструкцию 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;
Если у вас есть 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;