* Это универсальная процедура сравнения 2-х файлов, например, до и после проверки и чистки, * или файлов, введённых разными операторами, или промежуточных файлов с окончательными версиями и т.д. * По каждой переменной он выдаёт перечень различий. * Результат похож на результат аналогичной процедуры в STATA (cf3). * Успехов! Simon. /* Сравннение двух файлов и протокол различий */ /* Автор: Simon Freidin, 09.05.2006 */ /* Наблюдения сопоставляются по их значениям ID */ /* Выдача организуется по переменным */ /* Типичный пример выдачи: */ /* ID var1_old (прежнее знач.) var1_new (новое знач.)*/ /* */ /* 32747 3 2 */ /* 32676 4 5 */ /* 36472 2 3 */ /* 47699 5 4 */ set printback=no mprint=no length=none. file handle oldfile /name='укажите путь и имя старой версии файла данных'. file handle newfile /name='укажите путь и имя новой версии файла данных'. define checkvar (!pos=!tokens(1)). match files file=oldfile /rename= (!1=!concat(!1,'_old')) /in=inold /file=newfile /rename= (!1=!concat(!1,'_new')) /in=innew /keep=!concat(!1,'_old') !concat(!1,'_new') ID /by ID. sel if inold and innew. /* Выбираем наблюдения, присутствующие в обоих файлах */ display labels var=!concat(!1,'_new'). sel if !concat(!1,'_old') ne !concat(!1,'_new'). list /ID !concat(!1,'_old') !concat(!1,'_new'). !enddefine. /* Укажите в подкоманде drop переменную ID и все другие переменные, по которым вы не хотите /* проводить сравнение, либо которые просто отсутствуют в новом файле данных */ get file=oldfile /drop= ID . n of cases 1. oms /destination viewer=no. flip. omsend. write outfile="c:\\temp\\checkvar.sps"/"checkvar " case_lbl ".". exe. include "c:\\temp\\checkvar.sps".