Лекция 2. Программирование на языке SAS. Основы шага DATA (1185374), страница 3
Текст из файла (страница 3)
для обработки отдельных групп наблюденийRETAIN и временные массивы для сохранения данных междуитерациями31Транспонирование с помощью массива на шагеданных• Пример последовательность действий «от признаков кнаблюдениям»:• Создать и «привязать» к переменным массив размером в нужное числопризнаков• Во внутреннем DO цикле внутри цикла обработки наблюденийсохранять значения массива в выходном наборе по строкам• Пример:work.rotateEmployee_IDPeriodAmount1111Qtr21001111Qtr450Orion.employee_donationsEmployee_ID1111Qtr1.Qtr2100Qtr3.Qtr450AmountPDVEmployee_IDQtr1Qtr2Qtr3Qtr4iPeriodAmount32Процедура TRANSPOSEPROC TRANSPOSE DATA=input-data-set<OUT=output-data-set><NAME = variable-name>;<BY <DESCENDING> variable-1<...<DESCENDING> variable-n> <NOTSORTED>;><VAR variable(s);><ID variable;>RUN;NAME=Указывает новое имя столбца _NAME_.
Значения в этом столбце определяютпеременную, которая является источником значений для строки.BYУказывает переменные, используемые для создания групп BY.VARУказывает транспонируемые переменные.IDУказывает переменные, значения которых становятся новыми переменными.• транспонирует выбранные переменные в наблюдения;• по умолчанию транспонирует числовые переменные;• транспонирует символьные переменные, только если они явно указаны воператоре VAR.Использование процедуры TransposeНачнем с простого шага PROC TRANSPOSE:Фрагмент листинга rotate2_NAME_Employee_IDQtr1Qtr2Qtr3Qtr4_LABEL_Employee IDCOL1120265...25COL212026715151515COL312026920202020...COL12412114710101010Для каждой переменной была создана отдельная строка, а для каждогонаблюдения своя переменнаяОператор BYBY, чтобы сгруппировать вывод по Employee_ID.Все числовые переменные, кроме переменой BY, транспонированы.Employee_ID120265120265120265120265120267120267120267120267_NAME_COL1Qtr1Qtr2Qtr3Qtr4Qtr1Qtr2Qtr3Qtr4...2515151515создается одно наблюдение для каждой транспонированной переменнойдля Employee_ID и включаются пропущенные значенияНастройки параметров транспонирования• Оператор VAR используется для указания, какие переменные будуттранспонироваться.
Он может включать символьные и числовыепеременные.• Для переименования переменных используется параметр PROCTRANSPOSE, NAME= и опция набора данных RENAMEПреимущества разных методов транспонированияПроцедура TRANSPOSEМожет сделать ненужным сложный шаг DATA.Для реструктуризации данных требуется очень мало кода.Шаг DATAМожет создавать несколько наборов данных.Может направлять вывод в наборы данных на основе иххарактеристикДопускает обработку First. и Last..Допускает выполнение сложных операций с данными.Другие действия с наборами данных• Описание свойств набора данных - процедураPROC CONTENTS DATA=<имя>;RUN;• Изменения наборов данных с помощью PROC DATASETS(см.
Help)• Переименование (параметр CHANGE)• Удаление (параметр DELETE)• Изменение свойств набора и даже переменных (параметрMODIFY)• Другие полезные процедуры• «Вертикальная склейка» PROC APPEND (в том числе сизменениями)• Копирование PROC COPY (в том числе с изменениями)• НО!• Все это можно делать «руками» на шаге DATA• Или на SAS SQL (но это позже)38Задание 11)На основе набора данных SASHELP.CARS сформировать иерархическийтекстовый файл вида:Производитель далее в скобках (Геошрафическая область происхожденияПроизводителя)Число моделей Производителя по каждому типу кузова в строку вида: CountSedun=XCountWagon=y …Среднний размер счета (Медиана счета для второго варианта) по каждому типу кузовав строку вида (аналогично предыдущему пункту)Дисперсия счета (Межквартильное расстояние для второго варианта) для размерасчета по каждому типу кузова в строку (аналогично предыдущему пункту)2)Считать сформированный текстовый файл и по нему сформировать наборданных с суммарной статистикой по числу моделей «Тип кузова»X«География»вида:AsiaSedun XWagon …USAY…Europe …Z………При подсчете статистики не учитывать 2х производителей с минимальным среднимсчетом (максимальной медианой счета для второго варианта)Замечание: не использовать процедуры кроме sort!39.