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
* Восстановление чисел из сумм, записанных прописью, а также - из сумм, записанных с разделителями разрядов.

*(Вопрос) Имеется строковая переменная, содержащая записи типа:
 100 млрд
 250 млн
 7 млрд
 Необходима преобразовать её в числовую переменную.

*Кроме того, есть строковые переменные, где числа записаны с запятой
 в качестве разделителя разрядов. Их тоже надо преобразовать в числа.
*(Ответ) Размещён в SPSSX-List 02.04.2003, автор: Raynald Levesque.


DATA LIST FIXED /revenue 1-14(A) empl 15-20(A).
BEGIN DATA
100 млрд      10,500
250 млн       500
7 млрд        7,000
END DATA.

COMPUTE #pos=INDEX(UPCASE(revenue),'МЛРД').
IF #pos>0 revenue2=NUMBER(SUBSTR(revenue,1,#pos - 1),F8)*1000000000.
COMPUTE #pos=INDEX(UPCASE(revenue),'МЛН').
IF #pos>0 revenue2=NUMBER(SUBSTR(UPCASE(revenue),1,#pos - 1),F8)*1000000.

COMPUTE empl2=NUMBER(empl,COMMA8).
EXECUTE.

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