2013-12-10 2 views
0

У меня есть переменная макроса, которая имеет более 1 наблюдения, как показано ниже.Одиночная цитата вокруг переменной макроса

%let age = 12,34,56; 
%put &age; 

Теперь я хочу использовать возраст как в моем где параметр в Proc SQL.

proc sql; 
select * 
from family 
where age in ("&age"); 
quit; 

Я использовал % bquote,% котировку% ул() и многое другое, но не увенчались успехом до сих пор.

+0

Почему название сказать «апострофы», но (по-оф-правильно) использовать двойные кавычки? – Joe

+0

Правда. Может потребоваться изменить заголовок – LonelySoul

ответ

3

Попробуйте без кавычек вообще (я предполагаю, что возраст является числовой переменной).

И если возраст является символом, тогда вы можете переписать инструкцию WHERE следующим образом;

where input(age, 8.) in (&age) 

Когда вы пишете

"&age" 

SAS создает одну строку со всеми значениями и запятые внутри, что не то, что нам нужно для оператора IN.

Добавлено. Это мой код, который работает:

%let age = 12,34,56; 
%put &age; 

data family; 
    input age @@; 
    datalines; 
15 16 17 12 33 34 55 56 
; 
run; 

proc sql; 
    select * 
    from family 
    where age in (&age); 
quit; 
+0

, это должно сделать это, никаких котировок на числовые –

+0

ПРЕДУПРЕЖДЕНИЕ: Явная символическая ссылка ВОЗРАСТ не разрешена. – LonelySoul

+0

Когда мы создаем макрос, он автоматически считается «Характером». В этом случае AGE был символом. Я считаю, что «кома» здесь большая проблема. – LonelySoul

Смежные вопросы