Переименование набора переменных в 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;
это также приемлемо - намного проще, чем записывать их каждый раз.