б/у || чтобы объединить две строки и перезаписать одну из переменных. Но перезаписи иногда не происходит.
Вот мой 1-й код:
data aa;
length a b $3;
a = 'FA';
b = '1';
a = a || b;
run;
Значение a по-прежнему равно «FA».
Но если мы заменим конкатенацию на:
$ б = а || б;
тогда b будет иметь значение «FA1».
Кто-нибудь может объяснить, почему это происходит
См. эту ссылку: amadeus.co.uk/tips/объединение строк





Символьные переменные SAS хранят конечные пробелы значения для заполнения длины переменной. Значения, объединенные с оператором конкатенации ||, никак не изменяются, поэтому эффективная операция (по значению) с переменными:
a = "FA " || "1 "
Итак, FA<space>1<space><space> забивается в 3 доллара и усекается до FA<space>
Код старой школы будет
a = trim(left(a))||left(b);
Ознакомьтесь с семейством функций CAT* для объединения значений с обрезкой, удалением и разделением. Например:
a = cats(a,b);
||— оператор ИЛИ в большинстве языков. В этом случае, поскольку первое значение является правдой, он вернет его. Не уверен, что правильный оператор для конкатенации в SAS