Язык sas что это
SAS означает ПО для статистического анализа . Он был создан в 1960 году Институтом SAS. С 1 января 1960 года SAS использовался для управления данными, бизнес-аналитики, прогнозного анализа, описательного и предписывающего анализа и т. Д. С тех пор в программное обеспечение было введено много новых статистических процедур и компонентов.
С введением JMP (Jump) для статистики SAS воспользовался графическим интерфейсом пользователя, который был представлен Macintosh. Jump в основном используется для таких приложений, как Six Sigma, проектирования, контроля качества, инженерного и научного анализа.
SAS не зависит от платформы, что означает, что вы можете запускать SAS в любой операционной системе – Linux или Windows. SAS управляется программистами SAS, которые используют несколько последовательностей операций над наборами данных SAS для создания надлежащих отчетов для анализа данных.
За эти годы SAS добавила множество решений в свой портфель продуктов. У него есть решение для управления данными, качества данных, аналитики больших данных, интеллектуального анализа текста, борьбы с мошенничеством, науки о здоровье и т. Д. Мы можем с уверенностью предположить, что у SAS есть решение для любой области бизнеса.
Чтобы ознакомиться с перечнем доступных продуктов, посетите раздел SAS Components.
Структура программы SAS Base
Ознакомимся со структурой программы на языке SAS Base.
Все программы SAS состоят всего из двух шагов: шаг PROC и шаг DATA. Шаг DATA предназначен для чтения, преобразования и создания наборов данных SAS, а процедурный шаг PROC в основном – для анализа данных, формирования и печати отчетов. Шаги состоят из операторов. Индикатор окончания шага – это ключевое слово RUN (или, например, QUIT для ряда процедур), также сигналом к завершению шага может быть наличие операторов STOP и ABORT. Шаги могут размещаться в произвольном порядке, компилятор считывает последовательно шаг за шагом. Стоит отметить, что и сами шаги считываются построчно и никак иначе. Разные части программы обмениваются друг с другом данными в виде наборов данных SAS.
Синтаксис SAS Base очень прост, так же как и написание кода.
Пример простейшей программы SAS представлен ниже:
Важным требованием синтаксиса является наличие точки с запятой в конце каждого оператора. Данная программа SAS считывает набор данных ads из библиотеки sasuser (с понятием «библиотека» мы познакомимся в следующей статье), создает новый набор данных new. На следующем шаге мы создаем отчет из нового набора данных.
Стоит отметить, что у SAS Base нет требований к форматированию кода. Вы можете написать код в одну строку и код будет работать. Чтобы отформатировать код в SAS U, нажмите на кнопку «формат кода»:
Хороший тон для программиста – это пояснения к исходному тексту программы. Комментарии не влияют на семантику программы.
В SAS Base есть два вида комментариев:
Как отмечалось ранее, Log необходимо детально изучать. Давайте рассмотрим несколько самых распространенных синтаксических ошибок:
В данном случае шаг отработает с предупреждением. В Log мы увидим следующую информацию:
В данном случае run на втором шаге программы будет расценен как параметр оператора proc print.
Ошибка будет выглядеть следующим образом:
- Непарные кавычки. В SAS Base можно использовать одинарные и двойные кавычки, которые должны быть парными.
Итак, это кратко об интерфейсе SAS UE, терминологии SAS Base и основных требованиях к синтаксису SAS Base. В следующей статье мы рассмотрим библиотеки SAS и их создание, создание детализированных отчетов, рассмотрим форматирование значений и задание постоянных атрибутов переменным.
Уверена, что работа с SAS окажется интересной и увлекательной. Grow with SAS!
В предыдущей статье мы познакомились с интерфейсом SAS UE, терминологией SAS Base, типами данных, основными требованиях к синтаксису SAS Base, а также рассмотрели распространенные синтаксические ошибки.
Сегодня я расскажу, как можно получить доступ к данным различных форматов. Обратите внимание, что в данной статье имеются ссылки на документацию, которая поможет вам подробнее ознакомиться с рассматриваемыми примерами.
Работа
Откровенно говоря, получить работу конкретно SAS-специалисту в России будет очень сложно. Как правило, SAS идёт как жирный плюс. но не как основная специализация. Тем не менее, если вам удастся набраться практического опыта работы с SAS хотя бы в течение 2 лет, хотя бы базово освоить SQL, VB и прочие полезности, то вы сможете смело рассчитывать на зарплату не менее 80 тысяч рублей в месяц. Причём речь не только о столице, стоимость программного продукта SAS как бы подсказывает работодателю не экономить в поисках дешёвой рабочей силы. Но, как уже было сказано, нужную вакансию ещё придётся поискать.
История возникновения
Для начала в сотый раз обратимся к рейтингу ресурса TIOBE, дабы отыскать в нём нашего сегодняшнего героя. SAS располагается на “предлидирующем” 21 месте, что, согласитесь, для data-языка великолепный результат. Так что давайте познакомимся с ним поближе.
Итак, Джеймс Гуднайт (James Goodnight) в 1976 году окончил Университет Северной Каролины, тут же приложил свою руку к созданию небольшой аналитической компании SAS Institute и вот уже 40 лет он ее CEO. SAS - аббревиатура от Statistical Analysis System, что полностью описывает основное направление деятельности компании.
Естественно, для того, чтобы эффективно обрабатывать большие потоки информации потребовался не только качественный программный продукт, но и соответствующий язык. И им стал SAS. Изначально это был довольно примитивный набор шаблонных запросов для группировки данных, но со временем SAS стал полноценным и достаточно популярным языком программирования.
В общем-то с этого момента можно было бы смело вести историю языка, программного обеспечения и всей компании, как единого целого, но в 2002 году объявился идеологический конкурент - World Programming System (WPS), который в своей деятельности не просто стал использовать язык SAS, но и разработал для него собственный компилятор и IDE.
Разумеется, вскоре началась судебная тяжба, которая в итоге создала интересный прецедент для всего IT-сообщества: WPS выиграл суд, доказав, что авторское право не нарушается, если используется синтаксис и функциональность языка, но не используются исходные коды. Таким образом, язык SAS отчасти избежал участи MATLAB, сорвав ярлык “вещи в себе”.
Кстати, сегодня SAS Institute - не просто преуспевающая компания с оборотом в несколько миллиардов долларов в год, но и одно из наиболее привлекательных мест для работы. Так, в 2013 году SAS заняла второе место в рейтинге “привлекательности” компаний США, пропустив вперёд лишь Google.
Читаем электронные таблицы.
Чтение файла EXCEL можно реализовать несколькими способами. В этой статье мы рассмотрим назначение библиотеки для файла excel.
Для назначения библиотеки SAS будем использовать электронную таблицу products.xlsx, хранящуюся в директории c:\workshop\habrahabr\products.xlsx. Данный документ выглядит следующим образом: он содержит 4 листа, каждый из которых станет отдельным набором данных SAS. Фрагмент данного документа представлен ниже:
Общий синтаксис назначения библиотеки такой же, как и в случае наборов данных SAS, меняется только механизм подключения:
Существует несколько механизмов для обработки файла excel, у всех свои особенности и настройки, с которыми можно ознакомиться в документации.
Результат выполнения оператора libname представлены ниже. Фрагмент Log:
Информацию о библиотеке посмотрим через процедуру PROC CONTENTS:
В зависимости от механизма дескриптор заполняется по-разному:
Результат выполнения оператора LIBNAME представлены ниже. Фрагмент Log:
Информацию о библиотеке посмотрим через PROC CONTENTS:
В зависимости от механизма дескриптор заполняется по-разному:
Результат выполнения оператора libname представлены ниже.
Информацию о библиотеке посмотрим через PROC CONTENTS:
В зависимости от механизма дескриптор заполняется по-разному:
1 вариант
Добываем инструменты
Научиться программировать на SAS Base можно на бесплатном интерфейсе под названием SAS University Edition или сокращенно SAS UE.
При запуске программы или задачи SAS Studio подключается к серверу SAS для обработки кода. Сервер SAS может быть размещен в облачной среде, локальной среде или же на локальном компьютере. После обработки кода результаты возвращаются в SAS Studio в вашем браузере.
SAS Studio поддерживает несколько веб-браузеров: Microsoft Internet Explorer, Apple Safari, Mozilla Firefox, and Google Chrome.
Обучение
Впрочем, это не означает, что постигнуть азы SAS невозможно. Компания активно продвигает свой продукт среди студентов, причём абсолютно бесплатно. Достаточно мощную пробную версию SAS University Edition можно скачать перейдя по ссылке.
Также на официальном сайте у вас есть возможность записаться на экспресс-курсы по изучению языка (причём на русском языке). Рекомендуемая длительность обучения в каждом разделе составляет 3 дня, требования и программу можно посмотреть прямо рядом с торжественной кнопкой записи.
В общем, было бы желание.
Назначаем пользовательскую библиотеку.
Рассмотрим простой случай назначения библиотеки: наборы данных SAS находятся в одной директории c:\habrahabr. Есть два способа решения этой задачи.
Литература
Нет смысла перечислять лучшие иностранные книги по SAS, так как все они собраны в одном месте, прямо на официальном сайте компании. Особое внимание стоит уделить пошаговому самоучителю, описанию возможностей языка и IDE, а также справочнику новичка.
Что касается ресурсов на русском языке, то тут, разумеется, всё значительно сложнее, но кое-что всё же есть. Помимо официального сайта, лекции Дмитрия Звежинского помогут тем, кто пока не познал английский язык на хорошем уровне, на официальные курсы записывать не хочет, но SAS изучить отчаянно желает.
На этом краткое знакомство считаем оконченным. А вы сталкивались когда-нибудь с языком SAS? Какие впечатления?
Освоить востребованную профессию в Data Science можно всего за полтора года на курсах GeekBrains. После учёбы вы сможете работать по специальностям Data Scientist, Data Analyst, Machine Learning, Engineer Computer Vision-специалист или NLP-специалист.
Переменные и атрибуты
У переменных в SAS есть ряд атрибутов, давайте познакомимся с некоторыми из них.
Длина переменной — это количество байт, приходящихся на один символ.
Данный код демонстрирует вышеизложенное:
Имена переменных, как и наборов данных, задаются самостоятельно. Есть ряд правил именования переменных SAS:
- Имена не должны превышать 32 символов.
- Имена должны начинаться только с буквы или символа нижнего подчеркивания.
- Имена могут содержать только буквы, цифры или символы нижнего подчеркивания.
- В именах переменных нельзя использовать специальные символы, в том числе и пробел.
- Имена могут содержать как прописные, так и строчные буквы, так как SAS не чувствителен к регистру при именовании сущностей (переменные, наборы данных, библиотеки и так далее). Обращаться в коде к переменной вы можете в любом регистре. Но! Важно то, что SAS запоминает первое появление названия переменной в программе и при формировании отчета использует именно его.
В последующих статьях мы подробнее познакомимся с атрибутом формат.
Ярлык переменной используется в отчетах вместо имен переменных. Ярлык может содержать до 256 символов, включая специальные символы, в том числе и знак пробела. В последующих статьях мы рассмотрим, виды ярлыков и как они используются в программном коде, а также приемы, когда в имени переменной может быть использован, например, пробел.
Программный продукт
Для того, чтобы оценить степень размаха в прикладных программах, с которым придётся столкнуться желающему освоить SAS в полном объёме, можно посетить официальный раздел с перечислением пакетов заглавной IDE. Впрочем, здесь прослеживается аналогия с уже упомянутым продуктом MATLAB/Simulink, где также имеется большое количество надстроек, но по сути подавляющее большинство из них имеет строгую специализацию. Так что изначально стоит сфокусироваться лишь на 4 следующих:
SAS Visual Analytics - инструмент для визуализации ваших данных;
SAS Enterprise Miner - инструмент для машинного обучения;
Enterprise / Text Miner - пакет надстроек, аналогичный SAS Visual Analytics, но с большим упором на упрощение любых внутренних взаимодействий;
SAS ETS Module - система прогнозирования.
Если вы вдруг сейчас подумали, что возможно стоит прикупить пару из них, то вот стоп-сигнал: SAS Enterprise Miner, к примеру, обходится крупным компаниям более чем в 100 тысяч долларов. Пакет Analytics будет значительно дешевле, около 8,5 тысяч, но разве от этого легче?
Добываем инструменты
Научиться программировать на SAS Base можно на бесплатном интерфейсе под названием SAS University Edition или сокращенно SAS UE.
При запуске программы или задачи SAS Studio подключается к серверу SAS для обработки кода. Сервер SAS может быть размещен в облачной среде, локальной среде или же на локальном компьютере. После обработки кода результаты возвращаются в SAS Studio в вашем браузере.
SAS Studio поддерживает несколько веб-браузеров: Microsoft Internet Explorer, Apple Safari, Mozilla Firefox, and Google Chrome.
Sas7bdat и данные
Начнем с того, что SAS Base работает только с особым форматом данных, который называется SAS Data Set (набор данных SAS). Но помимо всего прочего SAS является очень гибким инструментом и может считывать практически любые данные, преобразовывая в SAS Data Set. Набор данных SAS представляет собой обычную плоскую таблицу, состоящую из строк и столбцов. Набор данных SAS хранится как файл с расширением .sas7bdat.
С точки зрения традиционной терминологии SAS наборы данных состоят из переменных (variables) и наблюдений (observations). Проведя аналогию с терминологией реляционных баз данных, переменные являются столбцами, а наблюдения – строками.
Рассмотрим на примере описанное выше.
Представленная программа создает таблицу people (сам синтаксис мы рассмотрим позже):
Исходные данные могут иметь различный вид, SAS упростил эту задачу. В SAS существует всего два типа данных числовой (numeric) и символьный (character). В наборе данных people переменные First_Name, Last_Name, Phone_Number имеют символьный тип, а переменная Id – числовой. Стоит отметить, что даты в SAS — это тоже числа.
Данная программа создает набор данных time, содержащий текущие дату, время и дату и время (datetime) в формате SAS:
Возможный вид набора данных представлен ниже:
Все три значения – это даты в формате SAS. Итак, дата в формате SAS – это количество дней, начиная с 01 января 1960 до текущей даты, время в формате SAS – это количество секунд, начиная с полуночи текущей даты, дата и время – это количество секунд, начиная с полуночи 1960 года. Именно в таком виде хранятся даты в формате SAS в наборах данных.
Иногда данные могут быть неполными, как в наборе данных people: в нем отсутствуют некоторые значения. В SAS существует понятие missing – пропущенное значение. По факту, пропущенное значение – это тип значения для переменной, которая не содержит данных для конкретной строки или столбца. По умолчанию SAS записывает недостающее числовое значение в виде точки и отсутствующее значение текстовой переменной в качестве пробела. При сравнении «миссинг» всегда равен «миссингу», при этом в операторах сравнения «миссинг» — самое минимальное значение.
Кроме фактических значений, набор данных SAS имеет такие данные, как тип переменной, длину, имя, ярлыки, форматы, называемые атрибутами набора данных.
Вводная
Есть несколько вариантов изучить основы программирования на SAS Base.
- Прочитать документацию: все решения SAS хорошо задокументированы, чтобы пользоваться ими было легко даже новичку. Все справочники находятся на сайте поддержки. Из плюсов стоит отметить, что найти можно все, что интересует бесплатно, из минусов – долго, и вся информация на английском языке.
- Посмотреть бесплатный онлайн-курс в формате e-Learning. Плюсы – все подробно разъясняется с примерами и выполнением практических упражнений, минусы – долго (длительность 24 часа), курс на английском языке. Также можно посмотреть видео SAS на Youtube.
- Купить книгу, например, Little SAS Book. Книга знакомит начинающих пользователей с языком SAS Base, содержит практические примеры и упражнения. Но опять же, вся литература, выпускаемая SAS, на английском языке и имеет относительно высокую стоимость. Все книги представлены на официальном сайте SAS в разделе «Обучение», также можно воспользоваться ресурсом Amazon. Но если вы студент и участвуете, например, в нашей стажерской программе, то вам могло повезти и вы получили книгу в подарок, что не может не радовать.
- Прочитать наш курс статей, освящающий основы программирования на SAS Base. Эти статьи адресованы новым пользователям SAS, работающим в различных сферах бизнеса, по большому счету для всех, кто собирается проводить анализ данных с помощью решений SAS или писать свои программы на SAS Base.
Вводная
Есть несколько вариантов изучить основы программирования на SAS Base.
- Прочитать документацию: все решения SAS хорошо задокументированы, чтобы пользоваться ими было легко даже новичку. Все справочники находятся на сайте поддержки. Из плюсов стоит отметить, что найти можно все, что интересует бесплатно, из минусов – долго, и вся информация на английском языке.
- Посмотреть бесплатный онлайн-курс в формате e-Learning. Плюсы – все подробно разъясняется с примерами и выполнением практических упражнений, минусы – долго (длительность 24 часа), курс на английском языке. Также можно посмотреть видео SAS на Youtube.
- Купить книгу, например, Little SAS Book. Книга знакомит начинающих пользователей с языком SAS Base, содержит практические примеры и упражнения. Но опять же, вся литература, выпускаемая SAS, на английском языке и имеет относительно высокую стоимость. Все книги представлены на официальном сайте SAS в разделе «Обучение», также можно воспользоваться ресурсом Amazon. Но если вы студент и участвуете, например, в нашей стажерской программе, то вам могло повезти и вы получили книгу в подарок, что не может не радовать.
- Прочитать наш курс статей, освящающий основы программирования на SAS Base. Эти статьи адресованы новым пользователям SAS, работающим в различных сферах бизнеса, по большому счету для всех, кто собирается проводить анализ данных с помощью решений SAS или писать свои программы на SAS Base.
2 способ:
Назначить библиотеку программным путем. Назначение библиотеки SAS реализуется с помощью глобального оператора LIBNAME. Информацию по указанному оператору можно изучить в справочнике SAS 9.4 and SAS Viya 3.3 Programming Documentation / Global Statements.
Рассмотрим общий синтаксис глобального оператора LIBNAME.
libref – имя библиотеки.
engine — имя «движка», например, для наборов данных SAS – это BASE (но его можно не указывать, он задан по умолчанию). Если вы хотите создать новую библиотеку с другим «движком», отличным от механизма по умолчанию, вы можете отменить автоматический выбор.
Справочники, которые могут вам пригодиться при изучении механизмов подключения: SAS/ACCESS for Relational Databases и SAS Engines.
«Движки» SAS/ACCESS являются механизмами оператора LIBNAME, которые обеспечивают доступ к чтению, записи и обновлению более чем 60 реляционных и нереляционных баз данных, файлов ПК, устройств хранения данных и распределенных файловых систем.
'SAS-library' – путь к библиотеке, если путь задается с помощью макропеременной (будет рассматриваться в данном цикле статей), используются парные двойные кавычки. Во всех остальных случаях можно использовать парные одинарные кавычки.
options — допустимые опции. Простейшим примером является опция ACCSESS=READONLY, которая назначает атрибут «только для чтения» для всей библиотеки SAS. Со всем перечнем допустимых опций можно ознакомиться в справочнике SAS 9.4 and SAS Viya 3.3 Programming Documentation /Global Statements.
engine/host-options — являются одним или несколькими параметрами, которые перечислены в общей форме keyword = value.
Рассмотрим синтаксис оператора LIBNAME на практике. Назначим библиотеку Habr только для чтения:
Запустим код и проверим Log:
Просматриваем содержимое библиотеки SAS.
Один из вариантов просмотра содержимого библиотеки – использование процедуры PROC CONTENTS. Ознакомиться с процедурами, используемыми в SAS, можно в справочнике SAS 9.4 Procedures by Name and Product.
Процедура PROC CONTENTS позволяет создавать вывод, который описывает либо содержимое библиотеки SAS, либо информацию дескриптора для отдельного набора данных SAS. Чтобы просмотреть содержимое библиотеки SAS, мы можем использовать следующую общую форму процедуры:
Параметр NODS (который означает «no details») подавляет печать подробной информации о каждом файле при указании опции _ALL_.
Для конкретной библиотеки код будет выглядеть следующим образом:
Фрагмент вывода процедуры:
Обратите внимание, что в библиотеке также хранятся другие типы файлов, например catalog, index. О них можно прочитать в справочнике SAS 9.4 Companion for Windows, Fifth Edition.
Файлы с member type DATA являются стандартными наборами данных SAS. Второй вариант просмотра содержимого библиотеки – использовать процедуру PROC DATASETS:
Просмотр информации о конкретном наборе данных SAS реализуется следующим образом:
Обратите внимание на обращение к таблице в пользовательской библиотеке. Имя после data= двухуровневое: имя_библиотеки.имя_таблицы. В случае набора данных, хранящемся во временной библиотеке WORK, в обращении после data= можно использовать одноуровневое имя.
Например, в случае кода:
выведется информация о наборе данных charities, находящемся во временной библиотеке WORK.
Рассмотрим вывод процедуры для набора данных charities в пользовательской библиотеке HABR:
Служебная информация о таблице, получаемая в результате вывода, называется дескриптором.
Дескриптор содежит общую информацию о наборе данных: его название и имя библиотеки, типе, «движке», дате и времени создания и последнего изменения, количестве наблюдений и переменных, общей длине наблюдений, индексах, сортировке, сжатии, размере страницы и их количестве, информацию об атрибутах переменных.
Структура программы SAS Base
Ознакомимся со структурой программы на языке SAS Base.
Все программы SAS состоят всего из двух шагов: шаг PROC и шаг DATA. Шаг DATA предназначен для чтения, преобразования и создания наборов данных SAS, а процедурный шаг PROC в основном – для анализа данных, формирования и печати отчетов. Шаги состоят из операторов. Индикатор окончания шага – это ключевое слово RUN (или, например, QUIT для ряда процедур), также сигналом к завершению шага может быть наличие операторов STOP и ABORT. Шаги могут размещаться в произвольном порядке, компилятор считывает последовательно шаг за шагом. Стоит отметить, что и сами шаги считываются построчно и никак иначе. Разные части программы обмениваются друг с другом данными в виде наборов данных SAS.
Синтаксис SAS Base очень прост, так же как и написание кода.
Пример простейшей программы SAS представлен ниже:
Важным требованием синтаксиса является наличие точки с запятой в конце каждого оператора. Данная программа SAS считывает набор данных ads из библиотеки sasuser (с понятием «библиотека» мы познакомимся в следующей статье), создает новый набор данных new. На следующем шаге мы создаем отчет из нового набора данных.
Стоит отметить, что у SAS Base нет требований к форматированию кода. Вы можете написать код в одну строку и код будет работать. Чтобы отформатировать код в SAS U, нажмите на кнопку «формат кода»:
Хороший тон для программиста – это пояснения к исходному тексту программы. Комментарии не влияют на семантику программы.
В SAS Base есть два вида комментариев:
Как отмечалось ранее, Log необходимо детально изучать. Давайте рассмотрим несколько самых распространенных синтаксических ошибок:
В данном случае шаг отработает с предупреждением. В Log мы увидим следующую информацию:
В данном случае run на втором шаге программы будет расценен как параметр оператора proc print.
Ошибка будет выглядеть следующим образом:
- Непарные кавычки. В SAS Base можно использовать одинарные и двойные кавычки, которые должны быть парными.
Итак, это кратко об интерфейсе SAS UE, терминологии SAS Base и основных требованиях к синтаксису SAS Base. В следующей статье мы рассмотрим библиотеки SAS и их создание, создание детализированных отчетов, рассмотрим форматирование значений и задание постоянных атрибутов переменным.
Уверена, что работа с SAS окажется интересной и увлекательной. Grow with SAS!
Привет! Я Анна Добрыченко, преподаватель учебного центра SAS в России: провожу тренинги по программированию на SAS Base, использованию SAS Enterprise Guide и SAS Visual Analytics, участвую в подготовке стажеров. Вся техническая документация и статьи продуктов и решений SAS изложены на английском языке, а локализованного материала в Рунете недостаточно.
Поэтому в нашем блоге на Хабрахабре я расскажу об основах программирования на SAS Base в цикле статей.
Язык SAS Base представляет собой основу большинства этих продуктов и решений SAS, именно ему и будут посвящены статьи. В них я познакомлю с терминологией, типами данных, с которыми работает SAS Base, со структурой кода, написанного на SAS Base, и покажу основные приемы, которые используются при написании программ SAS.
Переменные и атрибуты
У переменных в SAS есть ряд атрибутов, давайте познакомимся с некоторыми из них.
Длина переменной — это количество байт, приходящихся на один символ.
Данный код демонстрирует вышеизложенное:
Имена переменных, как и наборов данных, задаются самостоятельно. Есть ряд правил именования переменных SAS:
- Имена не должны превышать 32 символов.
- Имена должны начинаться только с буквы или символа нижнего подчеркивания.
- Имена могут содержать только буквы, цифры или символы нижнего подчеркивания.
- В именах переменных нельзя использовать специальные символы, в том числе и пробел.
- Имена могут содержать как прописные, так и строчные буквы, так как SAS не чувствителен к регистру при именовании сущностей (переменные, наборы данных, библиотеки и так далее). Обращаться в коде к переменной вы можете в любом регистре. Но! Важно то, что SAS запоминает первое появление названия переменной в программе и при формировании отчета использует именно его.
В последующих статьях мы подробнее познакомимся с атрибутом формат.
Ярлык переменной используется в отчетах вместо имен переменных. Ярлык может содержать до 256 символов, включая специальные символы, в том числе и знак пробела. В последующих статьях мы рассмотрим, виды ярлыков и как они используются в программном коде, а также приемы, когда в имени переменной может быть использован, например, пробел.
Почему мы используем SAS
SAS в основном работает с большими наборами данных. С помощью программного обеспечения SAS вы можете выполнять различные операции с данными, как –
- Управление данными
- Статистический анализ
- Формирование отчета с идеальной графикой
- Планирование бизнеса
- Исследование операций и управление проектами
- Улучшение качества
- Разработка приложения
- Извлечение данных
- Преобразование данных
- Обновление и модификация данных
Если говорить о компонентах SAS, то в SAS доступно более 200 компонентов.
Это основной компонент, который содержит средство управления данными и язык программирования для анализа данных. Это также наиболее широко используемый.
Создавайте графики, презентации для лучшего понимания и демонстрации результатов в правильном формате.
Выполните статистический анализ с помощью дисперсионного анализа, регрессии, многомерного анализа, анализа выживаемости и психометрического анализа, анализа смешанной модели.
Привет! Я Анна Добрыченко, преподаватель учебного центра SAS в России: провожу тренинги по программированию на SAS Base, использованию SAS Enterprise Guide и SAS Visual Analytics, участвую в подготовке стажеров. Вся техническая документация и статьи продуктов и решений SAS изложены на английском языке, а локализованного материала в Рунете недостаточно.
Поэтому в нашем блоге на Хабрахабре я расскажу об основах программирования на SAS Base в цикле статей.
Язык SAS Base представляет собой основу большинства этих продуктов и решений SAS, именно ему и будут посвящены статьи. В них я познакомлю с терминологией, типами данных, с которыми работает SAS Base, со структурой кода, написанного на SAS Base, и покажу основные приемы, которые используются при написании программ SAS.
Разбираемся в интерфейсе
Немного о том, как выглядит интерфейс SAS UE.
Слева находится панель навигации, справа – рабочая область. Три основные вкладки рабочей области – «Код», «Журнал», «Результаты».
Справка по синтаксису появляется, как только вы уменьшаете список релевантных ключевых слов. Справка по синтаксису также появляется, если щелкнуть правой кнопкой мыши на ключевое слово в программе и выбрать Syntax Help (Справка по синтаксису).
Можно перейти на страницу документации по той или иной процедуре, кликнув на ссылку «Документация по продукту».
На вкладке «Выходные данные» вы можете увидеть созданные таблицы.
На вкладке «Результаты» вы можете просматривать вывод процедур, создающих отчеты.
Если какая-то часть программы используется часто, ее можно добавить во «Фрагменты кода».
Вы можете открыть справку (SAS Help) и документацию прямо из главной панели инструментов. SAS Studio Help (Справка SAS Studio) для перехода на страницу документации по SAS Studio. Эта веб-страница содержит справку по интерфейсу SAS Studio.
Если вы только начали изучать продукты SAS, то наверняка незнакомы с некоторыми особенностями терминологии, используемой в продуктах компании.
Создаем детализированные отчеты.
После получения доступа к требуемым данным рассмотрим процедуру для создания отчетов PROC PRINT. Подробную информацию о ней можно получить в справочнике SAS 9.4 Procedures by Name and Product. Распечатаем детализированный отчет, используя таблицу German из системной библиотеки sasuser.
Для начала изучим дескриптор указанной таблицы, нас интересуют атрибуты столбцов:
Фрагмент вывода процедуры:
Создадим детализированный отчет, удовлетворяющий представленным ниже требованиям:
-
Не включайте переменные Change и Retain в отчет:
Оператор VAR определяет переменные для печати. Оператор выводит их в том порядке, в котором вы их перечислили.
В данном условии нам необходимо использовать фильтр в операторе WHERE.
Обратите внимание, что при работе с текстовыми переменными важен регистр, а также вы обязательно заключаете требуемое значение в парные кавычки (двойные или одинарные).
Вывод данной программы SAS:
По умолчанию процедура PROC PRINT выводит номера строк, для того, чтобы убрать данный столбец, можно использовать опцию NOOBS (‘no observation’). В этом случае программный код выглядит следующим образом:
Операторы сравнения вы можете записывать привычными символами, а можете использовать мнемоники, как представлено в примере. Вывод данной программы представлен ниже:
Идентификатором наблюдения можно определить любую переменную. Когда вы указываете одну или несколько переменных в операторе ID, он использует форматированные значения этих переменных для идентификации строк. Обратите внимание, что если одновременно переменная указана в операторе VAR и в операторе ID, то она выведется два раза. Также при использовании оператора ID нет необходимости в опции NOOBS.
В нашем случае программа SAS будет иметь следующий вид:
Результаты выполнения кода представлены ниже:
Стоит отметить, что при задании атрибутов таких как ярлык и формат, они будут использованы только на определенном шаге PROC для создания требуемого отчета.
Для задания ярлыка используется оператор LABEL.
Общий синтаксис оператора LABEL выглядит следующим образом:
В ярлыке вы можете использовать любые символы, в том числе и пробелы, количество символов не должно превышать 256. Ярлыки переменных будут использованы для создания отчетов.
Не все процедуры «видят» ярлыки. Для того, чтобы процедура PROC PRINT выводила в отчет ярлыки, а не имена переменных, в опциях необходимо указать label (или split=). Опция SPLIT указывает разделитель, который контролирует разрывы в заголовках столбцов. Используем оператор LABEL в нашем программном коде:
2 вариант
(с использованием опции split=)
В опции split= указывается разделитель (обязательно в кавычках). Код в данном случае выглядит следующим образом (обратите внимание на использование разделителей в операторе Label):
Оператор TITLE задает заголовок в отчете, оператор FOOTNOTE задает нижний колонтитул.
Как и в случае оператора LIBNAME, данные операторы являются глобальными и действуют во время всего сеанса SAS до тех пор, пока вы не переопределите их значения. Вы можете использовать TITLE и FOOTNOTE как вне шагов PROC, так и непосредственно в них.
Общий синтаксис операторов:
Text-string – данный аргумент является строкой, которая может содержать до 512 символов. Вам необходимо заключать такие строки в одиночные или двойные кавычки. Текст отображается точно так же, как вы вводите его в операторе, включая прописные, строчные буквы и пробелы.
Также для настройки заголовков и нижних колонтитулов можно использовать стили:
Итак, возвращаясь к разрабатываемому отчету:
Результат выполнения программы:
Формат – это правило вывода значений переменных в отчет. Необходимо понимать, что формат не меняет значения в наборе данных SAS. Типы форматов соответствуют типу данных, но разбиты на категории: числовые, символьные, даты, время, дата-время.
Всю информацию о форматах можно найти в справочнике SAS 9.4 Formats and Informats: Reference. Также поддерживается возможность создания пользовательских форматов, об этом мы поговорим в следующих статьях.
Общий синтаксис оператора FORMAT.
variable – одна или несколько переменных, к которым небходимо применить формат.
DEFAULT=default-format – определяет временный формат по умолчанию для отображения значений переменных, которые не указаны в операторе FORMAT, используется в шаге DATA.
format – определяет формат, который используется для отображения переменных.
Общий синтаксис использованиея формата в операторе FORMAT следующий:
$ — признак текстового формата
Format – название формата
w — ширина формата, количество всех выводимых символов в значении
d — количество десятичных знаков
Формат всегда оканчивается на точку или на количество десятичных знаков. Стоит отметить, что при неверном выборе ширины формата значения в выводе могут «обрезаться». Давайте рассмотрим пример:
Значение переменной | Формат | Результат |
---|---|---|
34566.78 | DOLLAR10.2 | $34,566.78 |
34566.78 | DOLLAR9.2 | $34566.78 |
34566.78 | DOLLAR8.2 | 34566.78 |
34566.78 | DOLLAR7.2 | 34566.8 |
34566.78 | DOLLAR6.2 | 34567 |
34566.78 | DOLLAR4.2 | 35E3 |
При этом значение в наборе данных SAS остается неизменным:
Результат выполнения шага:
Отчет выглядит следующим образом:
Для группировки переменных используется оператор BY. Группировка переменных по определенным значениям подразумевает сортировку таблицы. Это связано с обработкой данных SAS Base.
Отсортировать набор данных можно с помощью процедуры PROC SORT.
При сортировке набора данных вам необходимо указать источник (исходный набор данных), группирующую переменную или переменные, а также при необходимости выходной (промежуточный) набор данных.
Давайте проверим вышеизложенное. Если посмотреть на отчет, выводимый в п.7 данной статьи, столбец Gender отсортирован по полу по убыванию. Так ли это?
Результат выполнения процедуры представлен ниже:
Таким образом, мы получили требуемый детализированный отчет на основании набора German в библиотеке Sasuser.
Что такое библиотеки SAS?
Библиотека в SAS – это метод централизованного хранения и прозрачного использования данных в программах SAS. Библиотека может быть папкой или каталогом на вашем компьютере или располагаться на внешнем жестком диске, FLASH-накопителе или компакт-диске и так далее.
Существует два типа библиотек: постоянные и временные. Постоянные библиотеки SAS сохраняются до тех пор, пока вы их не удалите. Постоянная библиотека доступна для обработки в последующих сеансах SAS. Временная библиотека SAS существует только для текущего сеанса SAS.
Файлы SAS, созданные во время сеанса, хранятся в специальном рабочем пространстве, которое может быть или не быть внешним носителем. Это рабочее пространство обычно назначается по умолчанию с именем Work. Файлы во временной рабочей библиотеке могут использоваться на любом шаге в программе SAS, но они не доступны для последующих сессий SAS. Файлы, хранящиеся в рабочей библиотеке, удаляются в конце сеанса SAS.
Разбираемся в интерфейсе
Немного о том, как выглядит интерфейс SAS UE.
Слева находится панель навигации, справа – рабочая область. Три основные вкладки рабочей области – «Код», «Журнал», «Результаты».
Справка по синтаксису появляется, как только вы уменьшаете список релевантных ключевых слов. Справка по синтаксису также появляется, если щелкнуть правой кнопкой мыши на ключевое слово в программе и выбрать Syntax Help (Справка по синтаксису).
Можно перейти на страницу документации по той или иной процедуре, кликнув на ссылку «Документация по продукту».
На вкладке «Выходные данные» вы можете увидеть созданные таблицы.
На вкладке «Результаты» вы можете просматривать вывод процедур, создающих отчеты.
Если какая-то часть программы используется часто, ее можно добавить во «Фрагменты кода».
Вы можете открыть справку (SAS Help) и документацию прямо из главной панели инструментов. SAS Studio Help (Справка SAS Studio) для перехода на страницу документации по SAS Studio. Эта веб-страница содержит справку по интерфейсу SAS Studio.
Если вы только начали изучать продукты SAS, то наверняка незнакомы с некоторыми особенностями терминологии, используемой в продуктах компании.
Sas7bdat и данные
Начнем с того, что SAS Base работает только с особым форматом данных, который называется SAS Data Set (набор данных SAS). Но помимо всего прочего SAS является очень гибким инструментом и может считывать практически любые данные, преобразовывая в SAS Data Set. Набор данных SAS представляет собой обычную плоскую таблицу, состоящую из строк и столбцов. Набор данных SAS хранится как файл с расширением .sas7bdat.
С точки зрения традиционной терминологии SAS наборы данных состоят из переменных (variables) и наблюдений (observations). Проведя аналогию с терминологией реляционных баз данных, переменные являются столбцами, а наблюдения – строками.
Рассмотрим на примере описанное выше.
Представленная программа создает таблицу people (сам синтаксис мы рассмотрим позже):
Исходные данные могут иметь различный вид, SAS упростил эту задачу. В SAS существует всего два типа данных числовой (numeric) и символьный (character). В наборе данных people переменные First_Name, Last_Name, Phone_Number имеют символьный тип, а переменная Id – числовой. Стоит отметить, что даты в SAS — это тоже числа.
Данная программа создает набор данных time, содержащий текущие дату, время и дату и время (datetime) в формате SAS:
Возможный вид набора данных представлен ниже:
Все три значения – это даты в формате SAS. Итак, дата в формате SAS – это количество дней, начиная с 01 января 1960 до текущей даты, время в формате SAS – это количество секунд, начиная с полуночи текущей даты, дата и время – это количество секунд, начиная с полуночи 1960 года. Именно в таком виде хранятся даты в формате SAS в наборах данных.
Иногда данные могут быть неполными, как в наборе данных people: в нем отсутствуют некоторые значения. В SAS существует понятие missing – пропущенное значение. По факту, пропущенное значение – это тип значения для переменной, которая не содержит данных для конкретной строки или столбца. По умолчанию SAS записывает недостающее числовое значение в виде точки и отсутствующее значение текстовой переменной в качестве пробела. При сравнении «миссинг» всегда равен «миссингу», при этом в операторах сравнения «миссинг» — самое минимальное значение.
Кроме фактических значений, набор данных SAS имеет такие данные, как тип переменной, длину, имя, ярлыки, форматы, называемые атрибутами набора данных.
Краткая справка
Впрочем, оставим дела компании и обратимся непосредственно к языку. Чтобы вы визуально представляли его внешний вид, вот небольшой отрывок кода, содержащий вывод на экран таблицу данных:
PROC PRINT DATA = models NOOBS;
WHERE Type = "Mountain";
FORMAT Price DOLLAR6.;
TITLE "Current Models of Mountain Bicycles";
RUN;
Основным конкурентом SAS является язык R, причём стоит признать, что последний имеет солидное преимущество. Во-первых, он был создан позднее, соответственно избежал многих проблем роста. Во-вторых, и это наверное главный фактор, он бесплатный, в то время как SAS требует дорогое программное обеспечение. Впрочем, давайте взглянем на преимущества и недостатки SAS в сравнении с главным конкурентом.
Простой синтаксис, быстрое обучение “с нуля”;
Отладка кода проходит значительно проще, чем на R;
Интеграция с БД (Oracle/Teradata);
Удобный формат выходных данных (особенно таблиц);
Мощная поддержка со стороны компании SAS;
Многолетний успешный опыт эксплуатации компаниями разной величины, с разными задачами и разным объёмом входных данных. В частности, России SAS используют ОАО “РЖД”, МТС, ЦБ РФ, а также ведущие банки, среди которых Сбербанк, Альфабанк, Тинькофф и многие другие.
Профессиональное использование языка предполагает покупку программного продукта;
Исходники многих исполняемых алгоритмов SAS не являются публичными, следовательно изучение работы языка сильно ограничено;
SAS значительно уступает в производительности R;
С точки зрения объёма кода SAS также зачастую сильно проигрывает (иногда в несколько раз).
При этом надо понимать, что далеко не во всех сферах SAS и R являются прямыми конкурентами. Взгляните на следующее изображение:
Из него отчётливо видно, что в Data Science SAS сильно проигрывает не только R, но и Python. Но вот в анализе данных, предполагающем дальнейшие прогнозы, SAS занимает лидирующую позицию.
1 способ:
Настроить библиотеку без программного кода. Во вкладке «Библиотеки» в SAS UE выбрать «Новая библиотека»:
Далее появится окно для настройки пользовательской библиотеки:
Имя библиотеки – library reference (или libref). Libref – это «псевдоним» (ссылка) для «хранилища», в котором находятся файлы. Название библиотеке задается в соответствии с правилами именования переменных в SAS (см. Урок 1), но на него выделяется не более 8 символов.
Правила именования библиотек, переменных, наборов данных и пр. в SAS можно изучить в справочнике SAS 9.4 and SAS Viya 3.3 Programming Documentation SAS Language Reference: Concepts в разделе Names in the SAS Language.
Обратите внимание, что библиотека назначена на все время сеанса SAS, но переопределять ее параметры можно.
Далее задаем путь к наборам данных SAS.
После назначения библиотеки она появляется в левой панели SAS UE.
Читайте также: