Разбор массива SAS, макропеременные

Я хочу создать массив, в котором хранятся имена переменных. Затем индексируйте массив и переходите к функции. Пока у меня есть следующее:

%let variables = cat dog lion sheep;

data _null_;
  array a_vars[*] &variables;
  do i = 1 to dim(a_vars);
    some_function(a_vars[i],i);
  end;
run;

У меня возникла проблема с назначением переменных массиву, а затем индексированием массива в функции: some_function(cat, 1) или some_function(dog,2) и т. д.


person Josh    schedule 06.10.2015    source источник
comment
Вы знакомы с функцией vname()?   -  person Reeza    schedule 06.10.2015


Ответы (1)


Я не уверен, что точно понимаю, что вы хотите сделать. Как уже упоминалось, вы можете использовать VNAME, чтобы найти имя iго элемента массива. Это действительно то, что вам нужно?

26         data _null_;
27            array a_vars[*] &variables;
28            length name $32;
29            do i = 1 to dim(a_vars);
30               name = vname(a_vars[i]);
31               put (i name) (=);
32               end;
33            run;

i=1 name=cat
i=2 name=dog
i=3 name=lion
i=4 name=sheep
person data _null_    schedule 06.10.2015