SAS Двумерный массив с макропеременными в качестве измерений

Не могли бы вы помочь с этим вопросом, пожалуйста,

Как определить двумерные массивы с гибкими размерами в зависимости от макропеременных в SAS?

%LET Dim = &a.*&b.;

МАССИВ Сплайн{&a.,&b.} B1-B&Dim.;

Я попытался с приведенным выше кодом, но он дал следующие ошибки:

http://s17.postimg.org/v5nkxw8hb/Sans_titre.png

Спасибо за помощь!


person Indunil Ruhunuhewa    schedule 16.07.2015    source источник
comment
1. Изображение размыто. 2. Массив SAS должен иметь фиксированные размеры и может использоваться только в шагах данных.   -  person Bill Huang    schedule 16.07.2015


Ответы (1)


При назначении макропеременной у вас не может быть математического выражения.

Итак, если а = 4 и b = 5

%LET Dim = &a.*&b.;

разрешается в DIM = "4*5" как строку, но вместо этого вы хотите 20.

для этого вам нужно выполнить математическую операцию в шаге данных:

data _null_;
    temp= &a * &b;
    call symputx('DIM', temp);

    ARRAY Spline{&a.,&b.} B1-B&DIM;
run;

Также меня интересует ваш снимок экрана, кажется, что B = 5-1 (как строка), так что я думаю, вы уже выполнили математическую операцию при присвоении b, которая не удалась... %let b = 5-1; разрешается в строку "5-1", а не в 4...

поэтому в вашем примере все разрешается:

 ARRAY Spline{4,5-1} B1-B4*5-1;

я думаю, ты хотел

    ARRAY Spline{4,4} B1-B16;

поэтому разделите все математические операции в шаге данных...

person kl78    schedule 16.07.2015
comment
%let myDIM = %sysevalf(4*5); создаст макрос var со значением 20 - person Max Power; 15.12.2015