Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лекция 2. Программирование на языке SAS. Основы шага DATA

Лекция 2. Программирование на языке SAS. Основы шага DATA (Лекции 2015)

PDF-файл Лекция 2. Программирование на языке SAS. Основы шага DATA (Лекции 2015) (ППП СОиАД) (SAS) Пакеты прикладных программ для статистической обработки и анализа данных (63202): Лекции - 10 семестр (2 семестр магистратуры)Лекция 2. Программирование на языке SAS. Основы шага DATA (Лекции 2015) - PDF (63202) - СтудИзба2020-08-25СтудИзба

Описание файла

Файл "Лекция 2. Программирование на языке SAS. Основы шага DATA" внутри архива находится в папке "Лекции 2015". PDF-файл из архива "Лекции 2015", который расположен в категории "". Всё это находится в предмете "(ппп соиад) (sas) пакеты прикладных программ для статистической обработки и анализа данных" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Программирование на языкеSASЛекция 2 (Основы шага DATA)Авторы материалов:Звежинский Дмитрий (SAS Russia/CIS), dmitry.zvezhinsky@sas.comПетровский Михаил (ВМК МГУ, SAS Russia/CIS), michael@cs.msu.su1Опции набора данных (как входных так ивыходных) keep, drop, rename, where1 data test1 (keep=x y);Опция набора данных – в test1 будут выведены2x=today();только x,y3y=datetime();ИЛИ4z=time();Опции keep, drop, where и rename могут быть5keep x y;использованы как операторы для всех наборов6 run;выводимых данныхKeep: оставить в наборе данных только указанные переменные (через пробел)Drop: оставить все переменные за исключением указанных (через пробел)Переменные, указанные в свойствах DROP (не указанные в KEEP) входныхнаборов данных, не попадают в PDV, а в свойствах выходных (или воператорах) попадают, но не записываются!1 data test;2set ecprg1.accounts3(rename=(account=code));4 run;Опция работает в исходящем и входящем наборе данных,переменная account будет переименована в codeЧаще всего используется в merge (либо для определенияуникального ключа из разноименных переменных, либо наоборотдля «разведения» одноименных, но разных переменных)2Управление вводом переменныхФайл с необработаннымиданнымиВходной набор данных SASПрименение параметров DROP=и KEEP= к входному набору данныхВлияют насодержимое PDVPDVОператорыDROP и KEEPПрименение параметров DROP=и KEEP= к выходному набору данныхВыходной набор данных SASВыбор наблюдений по условию26 data employees;27set employee_list;28where age <= 65 and29 run;фильтрация при записи данныхupcase(gender) = "M" ;1 data test;2set ecprg1.accounts3(where=(Employee_ID between 11000 and 11999));4 run;фильтрация при чтении данныхЗамечания для входных наборов данных:• where умеет работать только с теми переменными, которые есть во входномнаборе данных.

Никакие новые переменные формально не должныпоявляться в условии.• При использовании оператора where в PDV попадают не все наблюдения, атолько те, которые удовлетворяют условию.• Если данные не индексированы (про индексы дальше), то с диска читаетсявесь входной набор данных (даже если часть выборки не удовлетворяетусловию).Выбор наблюдений по позиции• OBS = и FIRSTOBS= задают номер первого и последнего наблюденияв выборке,• например, считать 6 записей, начиная с 5, понятно почему?• Можно сделать аналогично с использованием _N_ переменной, нобудет медленнее• А также через прямой доступ к наблюдению по абсолитному номеручерез опицю POINTСортировка наборов данных (Proc SORT)123456718293104115126proc sort data=ecprg1.contacts out=tempsort;by descending name;Куда будет выведенrun;отсортированный набор данных?procsort data=ecprg1.nonsalesdupes(keep=employee_idВходящий набор данных first last)По какимпеременнымdupout=dup1 out=nondup1 NODUPKEY;Сортировать(можетбытьнесколько)by employee_id;proc sort data=ecprg1.contacts out=tempsort;run;by descending name;procsort data=ecprg1.nonsalesdupes(keep=employee_idfirst last)run;Proc SORTумеет искать и выделять дубликаты:dupout=dup2 out=nondup2 NODUPRECS;employee_id;proc sortbydata=ecprg1.nonsalesdupes(keep=employee_idfirst last)Аdupout=dup1 out=nondup1 NODUPKEY;run;7by employee_id;8 run;9 proc sort data=ecprg1.nonsalesdupes(keep=employee_id first last)10dupout=dup2 out=nondup2 NODUPRECS;11by employee_id;12 run;БА: Дубликатами считаются записи с одинаковым значением employee_id.Дубликаты выводятся в набор данных dup1, все остальные записи – в nondup1Б: Дубликатами считаются записи, если они полностью совпадают друг с другом(все поля, которые мы читаем из nonsalesdupes: employee_id, first, last)6Группировка оператором by (шаг DATA)• Если набор данных отсортирован по некоторой переменной, на шаге DATA мыможем работать с маркерами начала и конца группы наблюдений с одним и темже значением этой переменной.Пример:Как посчитать сумму Quantityдля каждого Customer_ID?1234567891011proc sort data=ecprg1.usorders04 out=usord_sort;by customer_id;run;data summary_cust (keep=sum customer_id);set usord_sort;by customer_id;if first.customer_id=1 then sum=0;sum+quantity;if last.customer_id then output;run;Возможны вложенные группы!Чаще всего используется совместно с retainили массивами (об этом дальше)Сортировка!First.variable = 1 для первогонаблюдения в группе, =0 длядругих наблюдений,Last.variable =1 для последнегонаблюдения в группе, =0 длядругих наблюдений7Индексы и view• Отдельные файлы с индексом по переменным из исходногонабора данных• Основная задача –ускорение поиска при расчетеограничиваюющих условий и группировках (как в SQL)• Как и в СУБД может быть несколько индексов по одному набору,в некоторых случаях, например можно явно указывать имяиндекса:set mydata.employee (idxname=empnum);• Создание индекса:• С помощью процедуры proc datasets, а также в sql синтаксисе• Но можно и на шаге DATA:Data test1(index = (idx1 = (var1) idx2=(var2 var3)));• View (почти как в SQL)• программа (код шага DATA), которая генерирует набор данных• работа как с обычным набором, но физически он не создается• Создается с набор ключевым словом View:Data test2/View = Test2View;8Особенности шага Data – множественный оператор set• Посмотрим две программы:№1№2data test;set work.test1;run;data test;set work.test1;set work.test1;run;Work.test• Вопросы:• а) когда закончится выполнение программ?• б) сколько итераций сделает цикл в каждой программе?• в) будет ли отличаться результат?Смотрим в log:NOTE: There were 2 observations read from the data set WORK.TEST1.NOTE: The data set WORK.TEST has 2 observations and 2 variables.NOTE: DATA statement used (Total process time):real time0.00 secondscpu time0.00 seconds...NOTE: There were 2 observations read from the data set WORK.TEST1.NOTE: There were 2 observations read from the data set WORK.TEST1.NOTE: The data set WORK.TEST has 2 observations and 2 variables.Первыйшаг dataВторойшаг data9Особенности шага Data – множественный оператор setdata test;set work.test1;set work.test1;run;Итерация 1.Первый set: записывает первое наблюдение test1 в PDVВторой set: записывает первое наблюдение test1 в PDVНеявный оператор output (Содержимое PDV переносится в новый набор данных)Неявный оператор returnИтерация 2.Первый set: записывает второе наблюдение test1 в PDVВторой set: записывает второе наблюдение test1 в PDVНеявный оператор output (Содержимое PDV переносится в новый набор данных)Неявный оператор returnИтерация 3.Первый set: наткнулись на конец файла, шаг data закончен.А если разные dataset? То все тоже самое!!!! Два чтения в один общий PDV изапись.По сути каждый set – просто чтение данных из указанного набора в PDV!10Сохранение значений переменной в цикленаблюдений123456789101112131415161718• Как не переинициализировать PDV на каждом шаге, чтобы осуществлятьагрегацию?data test;ctr=0;Выводит значение переменной в logput ctr=;set ecprg1.contacts;Не работаетctr=ctr+1;Просмотр содержимого PDV (в log)put _all_;run;data test;retain ctr 0;set ecprg1.contacts;ctr=ctr+1;run;Создается новая переменная ctr,инициализируется нулём, её значение не будетсбрасываться в missing в начале каждой итерациишага DATAdata test;set ecprg1.contacts; Эта запись – аналог двух операторов впредыдущей программе (retain и увеличениеctr+1;счетчика)run;RETAIN variable-name <initial-value> …;11Оператор RETAIN — подробная информацияОператор RETAIN:• сохраняет значение переменной в PDV во время итераций шага DATA;• инициализирует сохраняемую переменную как пропущенное значениеперед первой итерацией шага DATA, если не задано начальное значениепеременной;• не влияет на переменные, прочитанные с помощью операторов SET,MERGE или UPDATE;• переменные, прочитанные изнаборов данных SAS,сохраняются автоматически;• Часто используется при групповойобработке (by) для формированияхарактеристик групп, например:12Очередь для переменной (Lag)• Шаг DATA последовательно читает наблюдения из набора данных.

Что делать,если нужно запомнить значение переменной, и использовать его наследующей итерации шага DATA?Пример: Посчитаем разницу между значениями переменной hires в текущемив прошлом году.1 data dif1;2 set ecprg1.yearly_saleshires;4 dif0=lag(hires);5 dif1=hires-lag(hires);6 dif2=dif(hires);7 run;1. Можно смотреть не на одно, а на несколько наблюдений назад (функцииlag2(..), lag3(..), …2. Каждая функция lag в программе формирует свою очередь.3.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5136
Авторов
на СтудИзбе
443
Средний доход
с одного платного файла
Обучение Подробнее