Как я могу проверить, является ли определенный символ строковой переменной цифрой в SPSS (а затем применить некоторые операции в зависимости от результата)?

Так, например, у меня есть переменная, отражающая номер улицы. Некоторые номера улиц имеют в конце дополнительные символы, например " 12b " . Теперь давайте предположим, что я извлек последний символ (это может быть цифра или дополнительная буква) в строковую переменную. После этого я хочу проверить, является ли этот символ цифрой или буквой. Как это может быть сделано?

1
mirirai 13 Сен 2018 в 14:12

2 ответа

Лучший ответ

Мне удалось это сделать с помощью функции MAX, где "mychar" - это символьная переменная, которую нужно проверить:

COMPUTE digitcheck = (MAX(mychar,"9")="9").

Если содержимое mychar представляет собой цифру [0-9], результатом функции MAX будет «9», в противном случае функция MAX вернет букву, и проверка на равенство завершится неудачно.

Таким образом вы также можете проверить, содержит ли вся строковая переменная букву или нет. Однако это выглядит довольно некрасиво, потому что вам нужно сравнивать каждый символ вашей строковой переменной.

compute justdigits = (MAX((CHAR.SUBSTR(mystr,1,1), CHAR.SUBSTR(mystr,2,1), CHAR.SUBSTR(mystr,3,1), ..., CHAR.SUBSTR(mystr,n,1),"9")="9").
1
mirirai 13 Сен 2018 в 11:53

Если вы попытаетесь превратить букву в число, оно станет пропущенным значением. Поэтому, чтобы проверить, является ли символ цифрой, вы можете сделать это:

if not missing(number(YourCharacter,f1)) .....

Тот же тест может определить, содержит ли строка только число или нет:

compute OnlyNumber=(not missing(number(YourString,f10))).

Примечание: использование команды number для строк приведет к появлению предупреждающих сообщений, которые вы, конечно, можете игнорировать.

1
eli-k 13 Сен 2018 в 12:55