Особенность функции CONCAT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | *(Вопрос) У меня проблема с командой CONCAT. Я использую следующий код: NEW FILE. DATA LIST LIST /id . BEGIN DATA 1 2 END DATA. STRING v1 v2 v3 (A10). COMPUTE v1 = "a". COMPUTE v2 = CONCAT(v1,"b"). COMPUTE v3 = CONCAT("c",v1). EXECUTE. Мне хотелось сцепить два строковых выражения в новую переменную, однако, в том случае, если первым аргументом в функции выступает переменная, то метод не работает.Результат в редакторе данных был следующим: id v1 v2 v3 1,00 a a ca 2,00 a a ca но мне казалось, он должен быть таким: id v1 v2 v3 1,00 a ab ca 2,00 a ab ca *(Ответ) Размещён в SPSS-X 6.3.2004. Автор: Raynald Levesque. Это ожидаемое поведение. Переменные v1 и v2 имеют формат A10. Поэтому результат CONCAT(v1,"b") есть 10 символов переменной v1 (последние 9 из которых есть пробелы), и затем символ "b". Другими словами, результат конкатенации CONCAT(v1,"b") имеет 11 символов. Поскольку v2 имеет емкость лишь для 10, команда COMPUTE v2=CONCAT(v1,"b"). присваивает первые 10 символов слева переменной v2. Решением будет использовать следующее: COMPUTE v2=CONCAT(RTRIM(v1),"b"). Функция RTRIM убирает замыкающие пробелы справа у переменной v1. Результирующая строка (после сцепления с "b") имеет длину лишь в 2 символа, которые и помещаются в v2. |
Related pages
...