* --------------------------------------------------------------------------- Файл: double entry check.sps Автор: Bruce Weaver Дата: 19 декабря 2001 Заметки: Использование MATCH FILES для контроля повторяющихся записей . * --------------------------------------------------------------------------- . * Во-первых, создадим пример файла данных с записями для объектов с ID от 6 до 12 и сохраним их. DATA LIST LIST /ID (f2.0) a (f2.0) b(f2.0) c (f2.0) Y (f2.0) . BEGIN DATA. 6 2 1 1 13 6 2 1 2 12 6 2 2 1 8 6 2 2 2 11 6 2 3 1 9 6 2 3 2 8 7 3 1 1 16 7 3 1 2 17 7 3 2 1 12 7 3 2 2 14 7 3 3 1 11 7 3 3 2 12 8 3 1 1 16 8 3 1 2 13 8 3 2 1 10 8 3 2 2 15 8 3 3 1 12 8 3 3 2 16 9 3 1 1 18 9 3 1 2 21 9 3 2 1 17 9 3 2 2 18 9 3 3 1 22 9 3 3 2 23 10 4 1 1 19 10 4 1 2 17 10 4 2 1 20 10 4 2 2 17 10 4 3 1 14 10 4 3 2 16 11 4 1 1 10 11 4 1 2 11 11 4 2 1 14 11 4 2 2 12 11 4 3 1 13 11 4 3 2 16 12 4 1 1 21 12 4 1 2 18 12 4 2 1 22 12 4 2 2 12 12 4 3 1 15 12 4 3 2 17 END DATA. compute fnum=2. exe. formats fnum (f2.0). var lab fnum 'Номер файла'. save outfile = 'c:\\file2.sav' /compressed. * Теперь создадим другой файл с записями для объектов с ID от 1 до 7 . * Обратите внимание, теперь оба файла имеют данные для ID 6 и 7 . DATA LIST LIST /ID (f2.0) a (f2.0) b(f2.0) c (f2.0) Y (f2.0) . BEGIN DATA. 1 1 1 1 14 1 1 1 2 12 1 1 2 1 17 1 1 2 2 20 1 1 3 1 12 1 1 3 2 10 2 1 1 1 11 2 1 1 2 13 2 1 2 1 12 2 1 2 2 16 2 1 3 1 11 2 1 3 2 13 3 1 1 1 12 3 1 1 2 13 3 1 2 1 15 3 1 2 2 18 3 1 3 1 15 3 1 3 2 13 4 2 1 1 11 4 2 1 2 16 4 2 2 1 13 4 2 2 2 14 4 2 3 1 15 4 2 3 2 17 5 2 1 1 9 5 2 1 2 11 5 2 2 1 13 5 2 2 2 14 5 2 3 1 12 5 2 3 2 8 6 2 1 1 13 6 2 1 2 12 6 2 2 1 8 6 2 2 2 11 6 2 3 1 9 6 2 3 2 8 7 3 1 1 16 7 3 1 2 17 7 3 2 1 12 7 3 2 2 14 7 3 3 1 11 7 3 3 2 12 END DATA. compute fnum=1. exe. formats fnum (f2.0). var lab fnum 'Номер файла'. * Объединим два файла. ADD FILES /FILE=* /FILE='C:\\file2.sav'. EXECUTE. * Ищем дублирующие записи, используя MATCH FILES . * Во-первых, надо отсортировать по ID и другим переменным. sort cases by id a b c y . MATCH FILES file=* /BY id a b c y / FIRST = unique . EXEC . freq unique. * Существует 12 неуникальных записей. * Ведь данные для объектов с ID 6 и 7 были в обоих файлах. Покажем их. use all. compute f = any(id,6,7). filter by f. exe. list id to unique. * Уберём дубликаты. use all. filter off. select if unique. exe. freq unique. * Теперь все записи уникальны. * --------------------------------------------------------------------------- .