* Тема: Подстановка данных из предыдущих строк в пустые ячейки. * Ключевые слова: пустые ячейки, LAG, восстановление неполных данных. * Опубликован: 09.03.2008. * Автор: rlevesque@videotron.ca. * Перевод: А. Балабанов. * Размещение: http://www.spsstools.ru/Syntax/WorkWithMissing/ReplaceBlanksByValueFromPreceedingCase.txt (.sps). * Вопрос: данные в моем файле введены так, что пустые ячейки означают "те же данные, что и выше" ("то же самое"). Можно ли поставить на место пустых ячеек действительные данные? * Ответ: размещен в SPSSX-L 08.09.2001. Автор: rlevesque@videotron.ca. * Примеч.: * 1. "Пустые" ячейки - это пропущенные значения в случае числовых переменных, а также - ячейки, заполненные пробелами в случае строковых переменных. Представленное решение работает для любых комбинаций числовых и строковых переменных и при любом их числе. * 2. Разумеется, решение предполагает, что имеющиеся пустоты образовались лишь из-за того, что данные в них дублируют данные из предыдущих строк. * Создадим пример данных для иллюстрации решения. DATA LIST LIST /locat(F8.0) gender(A1) agegroup(F8.0) data1(F8.0) data2(F8.0). BEGIN DATA 1 M 30 2 5 . " " 35 3 7 . F 30 3 3 . " " 35 5 5 END DATA. LIST. * Начало решения. * Следующая строка - для подавления ненужных сообщений об ошибках, которые будут возникать при чередовании команд для обработки числовых и строковых переменных. SET ERRORS=no. DO REPEAT var=ALL. * Следующая строка вызывает ошибку для строковых переменных, которую можно проигнорировать. IF MISSING(var) var=LAG(var). * Следующая строка вызывает ошибку для числовых переменных, которую можно проигнорировать. IF LEN(LTRIM(var))=0 var=LAG(var). END REPEAT PRINT. * Восстанавливаем нормальный режим выдачи ошибок. SET ERRORS=yes. LIST.