SAS — извлечение подписанного числа с плавающей запятой из строки

#sas

#sas

Вопрос:

У меня есть набор данных SAS с символьным полем, содержащим последовательный ряд целых чисел со знаком, которые я могу легко извлечь с помощью функции SCAN(), вложенной в INPUT (для преобразования в best6. числовое) и СЖАТИЕ (для обработки некоторых, казалось бы, случайно возникающих пробелов), но я не могу понять, как сохранить отрицательный знак, который появляется примерно в половине моих записей.

Пример поля: «Результирующее количество1 = -139 количество2 = 458 …» Итак, в приведенном выше примере поля я бы извлек токен 4 и получил 139. Моя проблема в том, что мой код, подобный:

 resultNumber = input(compress(scan(charField,4),''),best6.);
  

.. результат 139 вместо -139. Ценю любые советы, спасибо!

Ответ №1:

Обязательно укажите SCAN() при вызове функции, какие символы использовать в качестве разделителей.

 data _null_;
  charField="Result quantity1 = -139 quantity2 = 458 ...";
  resultNumber = input(compress(scan(charField,4,' '),''),best6.);
  put (_all_) (=);
run;