Переименование набора переменных в SAS с циклом DO

Я пытался переименовать набор переменных из шкалы, используя массивы и циклы DO, но безуспешно. Это кажется очень простой задачей. Любой совет, где я иду не так?

ARRAY ATRSS (i) ATRSS_1  ATRSS_12 ATRSS_13 ATRSS_25 ATRSS_29 ATRSS_30 ATRSS_32 ATRSS_33 ATRSS_35 ATRSS_36;;
Array DIS (10) $ DIS1-DIS10; 

DO i = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
    DIS (i) = ATRSS(i);
END;

Я получаю сообщение об ошибке: не допускается смешивание неявной и явной подписки массива.

Спасибо!

1 ответ

Решение

array atrss atrss_1 ... ;

Удалите (I) из первой строки, и все в порядке.

Я хотел бы отметить, что вы не переименовываете, по сути - вы не можете делать переименование таким образом - но, конечно, это достигает той же цели.

Вы можете улучшить это дальше, хотя он работает нормально, как есть:

array atrss atrss_1 atrss_12 atrss_13 atrss_25 atrss_29 atrss_30 atrss_32 atrss_33 atrss-35 atrss_36;
array dis(10);

do i = 1 to dim(atrss);
 dis[i] = atrss[i];
end;

Это делает его немного более гибким, если вы измените количество элементов в atrss. do i = 1 to 10; это также приемлемо - намного проще, чем записывать их каждый раз.

Другие вопросы по тегам