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

SAS BASE. Программирование на языке SAS BASE. Основы (Лекции 2013), страница 3

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

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

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

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

Текст 3 страницы из PDF

Во втором – создаем новуюпеременную и пользуемся оператором “if” (без “then”, т.е. создающим выборку).36Операторы where, if(создание выборки на шаге DATA)Полезные операторы и функции для работы с текстом:– Поиск подстроки с учетом регистраwhere string CONTAINS ‘Woman‘ ;– Простой шаблон: знак подчеркивания – любой символ, процент – любоеколичество любых символов, регистр важенwhere string LIKE ‘%Wom_n%‘ ;– Поиск без учета регистра: см. функцию findwhere find(string,‘woman‘, ‘I‘) >0 ;– Вырезать подстроку: см. функцию substr, второй аргумент – номер символа,начиная с которого её вырезать, третий – сколько символов вырезатьwhere substr(string,1,5)= ‘woman‘ ;Эту же функцию можно использовать для замены части текста– Длина текстовой строки без учета конечных пробелов: см. функцию lengthwhere length(string)= 5 ;– Замена в тексте комбинации символов: см.

функцию tranwrd37Использование RegExp*В SAS можно использовать «регулярныевыражения» - стандарт для поиска шаблоновв тексте.Примеры:1) Поиск наблюдений, где product_nameначинается со слова “Woman”:1 data plist;2set ecprg1.product_list;3where prxmatch('/^Woman/', product_name )>0;4 run;Prxmatch возвращает номерпервого символа, где найденуказанный шаблон.2) Поиск наблюдений и замена с помощью регулярных выражений:1 data plist(keep=product_name product_name1);2set ecprg1.product_list;3where prxmatch('/Woman/', product_name )>0;4product_name1= prxchange('s/Woman/Man/', -1, product_name);5 run;Prxchange производит указанное кол-во замен (-1 = без ограничений) по шаблону втексте, указанном в третьем аргументе (product_name).* http://support.sas.com/rnd/base/datastep/perl_regexp/regexp-tip-sheet.pdf38Call routines* (процедуры)•Это ещё один вариант подпрограмм, отличается от функций тем, каквозвращаются результаты.• Их нужно вызывать с помощью оператора CALL:CALL routine-name (argument-1<, ...argument-n>);CALL routine-name (OF variable-list);При этом аргумент может передавать значение в процедуру и/или в неговозвращается какой-то результат работы процедуры.Примеры использования шаблонов для названия переменных-аргументов:call cats(result,of y1-y15);call cats(result,of y:);Первый пример - конкатенация 15 символьных переменных (y1, y2, y3, … , y 15) впеременную result.

Второй пример – конкатенация всех переменных, которыеначинаются с «y». (тогда они все должны быть правильного типа!)call missing(sales);Одному или нескольким аргументам будет присвоено пропущенное значение(missing) – числовое или символьное, в зависимости от типа аргумента.* Справка: SAS(R) 9.3 Functions and CALL Routines: Reference39Очередь для переменной (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. При вызове функции возвращается значение из начала очереди, далеепроисходит сдвиг и в конец очереди помещается текущее значение аргумента.4. Перед первой итерацией шага DATA очередь заполняется пропущеннымизначениями (missing).40Импорт данных• Есть программные способы, обсуждение которых сложно показать в ondemand.• Поэтому, если формат файлов не слишком сложный, выберитеfile->open->data• Выберите библиотеку, куда вы хотите сохранить данные в виде набораданных SAS (on-demand: work)• Если данные находятся в виде необработанных файлов с данными (rawdata), вдобавок запустите для них мастер импорта:41PROC PRINT• Распечатка набора данных (листинг) в виде отчета.PROC PRINT <option(s)>;BY <DESCENDING> variable-1 <…<DESCENDING>variable-n>;….VAR variable(s) <option>;В заголовке PROC Print указывается название набора данных и некоторыенастройки отчета.Оператор By (не обязательный) задает разбивку отчета по указаннымпеременным (требуется предварительная сортировка набора данных)Оператор Var (не обязательный) задает структуру отчета, в немперечисляются переменные, которые мы хотим вывести в отчет.

Еслиэтого оператора нет – выводятся все столбцы из набора данных.Пример:1 proc print data= ecprg1.customer noobs;2 var customer_id country gender;3 run;* Base SAS® 9.3 Procedures Guide -> PRINT Procedure42PROC MEANS• Отчет с описательной статистикой для набора данных (в том числе сразбивкой по классифицирующей переменной)proc means data=ecprg1.monthly_prices n mean max min;var unit_cost_price;class month;run;Процедура умеет рассчитывать ~ 30 разных статистик для выборки* Base SAS® 9.3 Procedures Guide -> MEANS Procedure43PROC GPLOTЭто процедура позволяет, в частности, создавать линейные графики.Пример: построить два линейных графика на одних осях координат, данныенаходятся в наборе данных budget.1 proc gplot data=ecprg1.budget;2 plot (Yr2003 Yr2005) * Month / overlay;3 run;* SAS/GRAPH® 9.3 Reference -> SAS/GRAPH procedures -> GPLOT procedure44Диаграммыproc gchart data=ecprg1.donate;pie qtr /DISCRETE sumvar=amount;run;quit;На что способен SAS/Graph(примеры + программы)http://robslink.com/SAS/Home.htmhttp://support.sas.com/sassamples/graphgallery/PROC_GCHART.html45Манипуляции с выводом1.Сохранение нескольких отчетов в файл стороннего форматаods pdf file=‘~/my.pdf';proc gchart data=ecprg1.donate;pie qtr / DISCRETE sumvar=amount;run;quit;proc print data=ecprg1.donate;run;ods pdf close;Пояснения:*) ~/ : обозначение домашней директории в linux*) Вместо формата pdf можно использовать другие форматы: HTML, RTF, …LaTeX,…*) Справка: SAS(R) 9.3 Output Delivery System: User's Guide, Second Edition46Манипуляции с выводом2.

Сохранение объекта из отчета в набор данныхproc means data=ecprg1.budget;var yr2003 yr2004;run;Шаг 1. Узнать имя объекта:ods trace on;proc means data=ecprg1.budget;var yr2003 yr2004;run;ods trace off;Шаг 2:ods output Summary=work.tab1;proc means data=ecprg1.budget;var yr2003 yr2004;run;47Задания• Установить SAS On-Demand по инструкции.• Самостоятельно проделать демонстрации со слайдов,подумать над вопросами• Создайте с помощью Excel файл с двумя колонками, x и y.Причем x=-10:0.1:10, а y вычисляется как sin(x)• Импортируйте файл Excel в набор данных SAS средствамиSAS Enterprise Guide (меню file-> open->data …)• Напишите шаг Data, где вычисляется «скользящая» суммапо этому набору данных с заданным «окном» (пусть 5точек)• Постройте значение этой суммы на графике48Задания• Напишите шаг data, где создаётся набор данных с двумяпеременными (x, y) и 50 наблюдениями.

В каждомнаблюдении x выбирается случайно (равномернораспределено от -1 до 1), а y считается как x^2.• Отсортируйте этот набор данных по переменной x.• Численно проинтегрируйте y(x), например, с помощьюформулы трапеций, воспользовавшись вторым шагом data.• Найдите самостоятельно «рецепты», как можно объединить«по вертикали» два набора данных. Напишите программу,которая это делает с таблицами ecprg1.2008, ecprg1.2009 иecprg1.201049Макроподстановки• Мы научились писать код на языке SAS Base, но он не очень «гибкий».– У нас нет возможности организовать условное ветвлениепрограммы между частями кода– … и циклы, внутри которых выполняются шаги программы.– Мы не можем повторно использовать отлаженную часть кода.– Нет возможности вводить в программу параметры для повторногоиспользования кода в разных частях программы.

Если нужнопоменять один и тот же кусок кода – только средствами редактора(search - replace)• Чтобы решить эти задачи, в SAS есть надстройка над языком SAS Base,которая называется SAS Macro.• Help: SAS® 9.3 Macro Language Reference• По сути это продвинутый (и автоматизированный) вариант «copy»+«paste». Путь разработчика – написать и отладить программу безмакросов, а потом добавить макросы.50Как работает макропроцессор• Существуют специальные инструкции, чтобы управлятьмакроподстановками в код программы, условными переходами идинамическим созданием кода (когда используются подстановки спараметрами)• Макропроцессор выполняет обработку программы до её компиляции(синтаксической проверки) и исполнения. После работымакропроцессора должен получиться код на языке SAS BASE безкаких-либо макро-инструкций.

Другими словами, синтаксис и логикамакро-языка и SAS BASE изолированы друг от друга. Мы должнынаучиться их «дружить» между собой.• Первый пример макроинструкции – это создание и подстановкамакропеременной.Пример: распечатаем n первых наблюдений из набора данных, где nбудет задаваться макропеременной.Решение без макросов: использовать опцию к набору данных «obs=«proc print data=ecprg1.donate(obs=10);run;51Как работает макропроцессор•Создание макропеременной (одним оператором можно создать только однупеременную):%let numb_of_obs = 10 ;• Название – не более 32 символов английского алфавита (+ цифры и знакподчеркивания), регистр не важен, начинается с буквы или знакаподчеркивания.• Всё, что стоит между знаком «=» и знаком «;» является значениеммакропеременной numb_of_obs.• Любое значение макропеременной – это текст, который потом будет куда-топодставлен.

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