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
Решение SPSS AnswerNet 

Код решения:	 100000680	
ПО:		 SPSS Base 	
Тема:
Фиксированный и свободный формат данных в одном и том же файле ASCII (импорт в SPSS) 
Описание:
Вопрос. 
Каждое наблюдение в моём файле данных состоит из четырёх строк (записей). Первые три записи
введены в фиксированном формате (по своим колонкам). С четвёртой записью - проблемы. Она введена
в свободном формате. Она содержин номер социальной страховки, имя, фамилию, пол и некоторую другую 
информацию. Плохо ещё и то, что иногда в файле попадаются сложные имена и фамилии
людей, состоящие из нескольких слов. Я предусмотрительно вводил данные так, чтобы значения из разных
полей разделялись двумя пробелами, а значения из одного поля (например, сложная фамилия) - только одним.
При этом я всё же не понимаю, как можно ввести эти данные в SPSS. Подскажите, пожалуйста, 
ведь не вводить же мне всё это заново...

Ответ. 
Можете прочесть ваши данные командо DATA LIST, импортируя четвёртую запись как
единую строковую переменную, затем разобрав её на составные части как следует.
Вопрос здесь - в правильном выборе разделителя, т.е. символа(ов), который 
будем циклично искать в строке, в данном случае - двойного пробела.

DATA LIST RECORDS 4 / 1 v11 TO V15 11-20 
/ 2 v211 TO V215 11-25 
/ 3 v221 TO V225 21-35 
/ 4 #ALPHA 1-80 (A). 
COMPUTE #I=0. 
VECTOR #AL(5,A30). 
STRING ssn(A15) / fname(A30) / lname(A30) / sex(A1)/ A5(A5). 
LOOP . 
COMPUTE #I=#I+1. 
COMPUTE #X= INDEX(#ALPHA,'  '). 
COMPUTE #AL(#I) = UPCASE(SUBSTR(#ALPHA,1,#X-1)). 
COMPUTE #ALPHA=LTRIM(SUBSTR(#ALPHA,#X+1,LENGTH(#ALPHA)-#X-1)). 
END LOOP IF INDEX(#ALPHA,'  ')=1. 
COMPUTE ssn = SUBSTR(#AL(1),1,15). 
COMPUTE fname = SUBSTR(#AL(2),1,30). 
COMPUTE lname = SUBSTR(#AL(3),1,30). 
COMPUTE sex = SUBSTR(#AL(4),1,1 ). 
COMPUTE A5 = SUBSTR(#AL(5),1,5 ). 

BEGIN DATA. 
001 1112131415 
002 211212213214215 
221222223224225 
112-456-78928  jonathon  pierre van der hickerson  M  blah 
001 1112131415 
002 211212213214215 
221222223224225 
456-289-15562  mary  doe  F  blahs 
END DATA. 
LIST. 

*Создано: 1.10.2000.