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
50
51
52
53
54
55
56
57
58
/*Помогите, пожалуйста!

Имеется набор переменных, созданных командой VECTOR. Требуется переименовать эти 
переменные, дать им узнаваемые имена.  Массив данных выглядит примерно так 
(я преобразовываю данные временных срезов в лонгитюдный массив):

ID родство  рост1   рост2 ...  рост15    вес1   вес2 ...    вес15 ...
1  мать     67                           150
1  отец              70                          185
.
1  брат/сестра13                 62                          135

Требуется переименовать переменные так, чтобы значение отношения родства было
отражено в названии переменной. Другими словами, новые переменные должны называться примерно 
так (прошу прощения за длинные имена. Это только для примера, в реальных данных там будет не более
8 символов):

ID ростмать ростотец ... ростбрат/сестра13 весмать весотец...

Учитывая, что имеется более 150 таких переменных, не хотелось бы переименовывать их вручную.
Есть ли какой-то способ использовать, например, синтаксис DO REPEAT чтобы автоматически переименовать?

Буду признательна за любую помощь по этому вопросу!

Спасибо,

Сильвия */.
************************************.
* Вот ответ Рея в конференцию SPSS 15 июля 2000 г.


*Зададим имена переменных.
NEW FILE.
DATA LIST LIST /id(F8).
BEGIN DATA
END DATA.
VECTOR height(15F8) weight(15F8) test(15F8).

set mprint=on.
DEFINE !rename (!POS=!CMDEND)
!DO !var !IN (!1)

!IF (!LENGTH(!var)<6) !THEN
!LET !var2=!var
!ELSE
!LET !var2=!SUBSTR(!var,1,5)
!IFEND

RENAME VARIABLE (!CONCAT(!var,'1')=!CONCAT(!var2,'mdr')).
RENAME VARIABLE (!CONCAT(!var,'2')=!CONCAT(!var2,'ftr')).
!DO !cnt=1 !TO 13
RENAME VARIABLE (!CONCAT(!var,!LENGTH(!CONCAT(!BLANK(!cnt),'xx' )))=!CONCAT(!var2,'s',!cnt)).
!DOEND
!DOEND
!ENDDEFINE.

* Вызовем макрос.
!rename height weight test.