Во-первых, строковые литералы должны быть в кавычках.Итак, вы хотите использовать '_sq'
вместо _sq
.Без кавычек SAS будет предполагать, что _sq
является именем переменной.
Также символьные переменные SAS имеют фиксированную длину, поэтому с помощью простого оператора конкатенации ||
добавьте суффикс после пробелов.Тогда попытка записать результат обратно в ту же переменную потеряет суффикс, поскольку он не будет помещаться в переменную.
Вам не нужно использовать обработку BY для этого.Вы расширяете каждую строку на несколько строк.
data want;
set have;
output;
length suffix $8 ;
do suffix='log','sq';
id = catx('_',id,suffix);
label = catx('_',label,suffix);
output;
end;
drop suffix;
run;
Если вы не хотите сохранять исходные наблюдения, удалите оператор output
перед циклом do
.