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
* Размещено в новостной группе SPSS. Автор: rlevesque@videotron.ca, 17.9.2000.

* Допустим, имеется 8 переменных, и каждая из них имеет 50 наблюдений.
* Но эти наблюдения расположены в 5 строках, по 10 столбцов в каждой.
* Задача - переформатировать данные по каждой из 8 переменных в одну колонку.

* Эта часть программы создаёт пример файла данных того же формата, что имеется у автора вопроса.
INPUT PROGRAM.
* Этот вектор будет формировать 10 столбцов, о которых говорилось выше.
VECTOR c(10F8.0).
LOOP #vars=1 TO 8.
LOOP #rows=1 TO 5.
LOOP #cols=1 TO 10.
COMPUTE c(#cols)=#vars.  
END LOOP.
END CASE.
END LOOP.
END LOOP.
END FILE.
END INPUT PROGRAM. 
LIST.

*Сначала сохраним эти данные в табулированном файле.
SAVE TRANSLATE OUTFILE='C:\\TEMP\\raw_data.dat'
  /TYPE=TAB /MAP /REPLACE.

* Теперь прочтём файл с табуляцией в SPSS.
NEW FILE.
INPUT PROGRAM. 
VECTOR DATA(50). 
* Если вы будете запускать этот синтаксис более одного раза в течение
сеанса SPSS, закомментируйте следующую строко после однократного исполнения.
FILE HANDLE rawdata /NAME='C:\\TEMP\\raw_data.dat'.
DATA LIST FILE=rawdata FREE (TAB) /DATA1 TO DATA50.
END INPUT PROGRAM. 
*Да... транспонирование - часть этого решения ;-).
FLIP.

*Убираем лишнее.
MATCH FILES FILE=* /DROP=case_lbl.