Я использую макрос в SAS для обработки таблиц данных в конкретной библиотеке. Я помещал информацию метаданных в шаге данных null и делал сравнение с оператором where и моей макропеременной.одинарные значения цитирования с использованием sql для создания макропеременной
Мой SQL шаг выглядит следующим образом:
proc sql;
select quote(trim(code)) into :procedures separated by ', ' from procedures;
quit;
Некоторые значения code
содержат значения, как «45.10» и «G0102», поэтому не может быть принужден к числовым. Макрос содержит строку:
%macro filter_codes(indata, outdata);
data &outdata;
set &indata(where = (code in (&procedures)));
run;
%mend;
но десятичные значения создают проблемы при двойных кавычках, используя функцию «кавычки».
Могу ли я отделять значения одинарными кавычками?
EDIT: проблема была вызвана тем, что макрос filter_codes выполнялся на этапе выполнения вызова (по диапазону наборов данных), а двойные кавычки, разрешенные в макропеременных внутри двойных кавычек, завершили бы выполнение вызова.
В коде нет ничего явно неправильного, если только ваши значения не содержат сами кавычки. Разумеется, нет ничего особенного в том, как SAS использует '' 'from' '', за исключением разрешения макропеременной, что не кажется здесь актуальным из вашего вопроса. Простой тест на моей стороне показал, что он работает нормально, используя 'height' from' sashelp.class'. Можете ли вы опубликовать некоторые примеры данных, которые показывают, что это не работает? – Joe
Вы правы, причина, по которой это вызвало ошибку, заключалась в том, что цитируемый текст был разрешен в команде выполнения вызова на этапе _null_. Я изменил вопрос. – AdamO