Слияние двух файлов по принципу «много-ко-многим»
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | *(Вопрос) Мне требуется слить файлы по двум переменным по принципу "много-ко-многим". * Первый файл содержит 2 переменных: --первая переменная содержит уникальные значения, --вторая переменная задаёт подгруппы для значений первой переменной, т.е. её значения не обязательно уникальны. * Второй файл имеет переменную, аналогичную второй переменной из первого файла. * Опять же, её значения неуникальны. * Цель - слить эти два файла так, чтобы записи из первого файла повторились столько раз, сколько записей из второго файла удовлетворяют условию "вторая переменная из первого файла = переменной из второго файла". * Пример: *Первый файл V1 V2 1 A 2 A 3 A 4 B 5 B. *Второй файл A A B. *Результат должен быть таков: 1 A 2 A 3 A 1 A 2 A 3 A 4 B 5 B. *(Ответ) Размещён в новостной группе SPSS 29.03.2002, автор: Raynald Levesque. DATA LIST LIST /v1(F8.0) v2(A1). BEGIN DATA 1 A 2 A 3 A 4 B 5 B END DATA. SORT CASES BY v2. SAVE OUTFILE='c:\\temp\\datafile1.sav'. NEW FILE. DATA LIST LIST /v2(A1). BEGIN DATA A A B END DATA. SAVE OUTFILE='c:\\temp\\datafile2.sav'. ***** Слияние. GET FILE='c:\\temp\\datafile2.sav'. COMPUTE nobreak=1. AGGREGATE /OUTFILE=* /BREAK=v2 /nb = N(nobreak). MATCH FILES TABLE=* /FILE='c:\\temp\\datafile1.sav' /BY v2. WEIGHT CASES BY nb. * Для большинства практических задач такой вариант даст нужный вам результат. * В том же случае, если вам действительно нужны дубликаты наблюдений (не только взвешенное их число), см. синтаксис "Восстановление перекрёстной таблицы в исходный файл.SPS" на http://www.spsstools.net/SampleSyntax.htm#ReadWriteOrCreateData . |
Related pages
...