Я хочу проверить, существует ли переменная, и если нет, создать ее.
Проверить, существует ли переменная
Ответы (4)
Можно использовать функции open()
&varnum()
. Ненулевой вывод из varnum()
указывает на то, что переменная существует.
data try;
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
;
data try2;
set try;
if _n_ = 1 then do;
dsid=open('try');
if varnum(dsid,'var4') = 0 then var4 = .;
rc=close(dsid);
end;
drop rc dsid;
run;
close()
свой набор данных после того, как откроете его с помощью функции open()
.
- person cmjohns; 16.04.2011
data try2; var4=.; set try;
перезапишет любые данные в уже существующей переменной.
- person Murray; 01.06.2011
var4
, он создаст его в наборе данных. То, что происходит во время выполнения, не имеет никакого значения.
- person Tom; 19.06.2018
data try2;
set try;
var4 = coalesce(var4,.);
run;
(при условии, что var4 является числовым)
coalescec()
, SAS по умолчанию создаст его как числовой.
- person Tom; 19.06.2018
Назначьте var4
самому себе. Присваивание создаст переменную, если она не существует, и оставит содержимое на месте, если оно существует.
data try;
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
;
data try2;
set try;
var4 = var4;
run;
Просто помните, что создание var4
таким образом, когда оно не существует, будет использовать атрибуты переменных по умолчанию, поэтому вам может потребоваться использовать явный оператор attrib
, если вам требуется определенное форматирование/длина и т. д.
var4
в качестве числовой переменной, если ее не было во входном наборе данных.
- person Tom; 19.06.2018
Это очень поздний ответ/комментарий, но этот метод работает для меня и довольно прост (SAS 9.4). В приведенном ниже примере я использовал отсутствующие числовые и символьные переменные и присвоил значение отсутствующей символьной переменной.
data try;
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
;
data try2;
length var4 $20;
length var5 8;
set try;
var4 = var4;
if var4 = ' ' then var4 = 'Not on Source File';
run;
creates
переменная var4
вместо проверки ее существования. Вы проверяете, является ли переменная (новая или старая) пустой или нет.
- person Tom; 19.06.2018
abort;
, если входные данные не соответствуют спецификациям. - person StasK   schedule 23.10.2015