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