У меня есть набор входных макропеременных в SAS. Они являются динамическими и генерируются на основе выбора пользователя в сохраненном процессе sas.Получить значения переменных макроса в таблице SAS
For example:There are 10 input values 1 to 10.
The name of the macro variable is VAR_. If a user selects 2,5,7 then 4 macro variables are created.
&VAR_0=3;
&VAR_=2;
&VAR_1=5;
&VAR_2=7;
Первый с суффиксом 0 обеспечивает подсчет. Следующие 3 дают значения.
Примечание: Если пользователь выбирает только одно значение, тогда создается только одна макропеременная. Например, если пользователь выбирает 9, то & var_ = 9; будут созданы. Не будет никакой макрокоманды count. Я пытаюсь создать таблицу sas, используя эти переменные.
Это должно быть, как это
OBS VAR
-----------
1 2
2 5
3 7
-----------
Это то, что я пытался. Не уверен, что это правильный способ сделать это. Это не дает мне окончательного решения, но я могу, по крайней мере, получить имя макропеременных в таблице. Как я могу получить их ценности?
data tbl1;
do I=1 to &var_0;
VAR=CAT('&VAR_',I-1);
OUTPUT;
END;
RUN;
PROC SQL;
CREATE TABLE TBL2 AS
SELECT I,
CASE WHEN VAR= '&VAR_0' THEN '&VAR_' ELSE VAR END AS VAR
from TBL1;
QUIT;
Благодарим за помощь.
Jay
Шаблон переменной выглядит так, как веб-интерфейс от SAS возвращает выбор пользователя. Я также видел, где он просто возвращает одну переменную и вообще не создает переменную '_0'. – Tom
@ Тома Хм, это очень странно. Почему «первым» будет '& var_', а не' & var_1' ?? – Joe
Не уверен, я предположил, что логика прошла так. Если вы определяете поле как MONTH и не выбираете multi-select, тогда получите переменную MONTH. Поэтому они хотели также вернуть переменное имя MONTH, когда оно является мульти-select. Я не смотрел на нее в течение многих лет, но я думал, что это сделал как МЕСЯЦ, так и МЕСЯЦ1. Но, возможно, это был мой код, который добавил MONTH1, поскольку он казался таким странным. – Tom