Я пытаюсь использовать макрос для обозначения некоторых переменных массива в SAS, чтобы избежать необходимости вводить много строк кода. То, что я пытаюсь сделать, это в основном это:SAS: array, переданный макросу
%macro LABEL_ARRAY(V);
%DO I = 1 %TO 4;
%let variablename=&V(&I);
array1[&I] = "Value of &variablename"
%END
%MEND LABEL_ARRAY;
Таким образом, V представляет собой массив, содержащий соответствующие имена переменных для позиций в array1 массива. Я пытаюсь сделать это для более чем 4 переменных для каждого массива и для множества массивов, но это основная идея. В основном то, что происходит, это массив1 [& I], который я бы хотел в конце сказать сказать array1 [1] для первой записи, не использует значение I, а просто говорит & I, то же самое с & variablename.
Любые предложения о том, что может произойти? Благодарю.
вы можете попробовать% let variablename = & &V(&I);, чтобы узнать, будет ли это работать, но я подозреваю, что нет. Фактически измените его на:% let variablename = &&V&I;, и это должно работать – DCR
Я смущен относительно того, что вы хотите. Можете ли вы показать шаг данных, который использует ваш макрос? Вы говорите, что хотите отмечать переменные, но нет инструкции LABEL. Array1 [& i] решит array1 [1], как вы говорите, вы хотите. & Variablename не будет разрешать имя переменной. Вы можете посмотреть функцию VNAME. Но вы не можете использовать массив шагов данных, чтобы назначать метки переменных. – Quentin
@Quentin Предположительно это создает кучу операторов ярлыков, которые затем используются как 'label% label_array (v);' – Joe