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

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

Файл №1185375 Лекция 3. Программирование на языке SAS. Основы шага DATA (Лекции 2015) 2 страницаЛекция 3. Программирование на языке SAS. Основы шага DATA (1185375) страница 22020-08-25СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

версии PUT и INPUT• Явно преобразовать типы переменнойв наборе данных можно «переписав»переменную на шаге Data:25Валидация форматов• Если в input не может быть применен входной формат, то:• Пишется сообщение в журнал• Генерируется ошибка _error_=1• Значение целевой переменной становится – пропуск• Результат: rate=.

_ERROR_=1 _N_=1• Можно отключить генерацию сообщения в журнале и ошибкучерез ?? или ?:• Результат: rate=. _ERROR_=0 _N_=1, а если использовать один ?, тоошибка генерируется, а запись в журнал нет26Контроль целостности• Идея как в реляционных СУБД:• Задать ограниченя, которые должны всегда выполнятся в наборе данных• Делается через PROC DATASET:PROC DATASET LIBRARY=libref;MODIFY member;IC CREATE name=CHECK(WHERE=condition));RUN;• Например:27Чтение набора данных SAS с помощьюоператора SETВвод-выводпамятьВвод:SASДанныеКэшPDVВывод:данныеSASВвод-вывод...Чтение внешних файловВвод-выводВвод:необработанныеданныеБуфер вводаБуферыКэшпамятьPDVВывод:данныеSASВвод-выводБуферыДанныепреобразуютсяиз внешнегоформатав форматSAS.Работа с внешними файлами• Пока мы работали с наборами данных в формате SAS• Внешние файлы:••••Текстовые с фиксированным размером столбцовСложно структурированные текстовые файлыТекстовые с разделителямиБинарные файлы• Операции• Чтение:• Запись:DATA output-SAS-data-set;INFILE 'raw-data-file-name’;INPUT specifications;<additional SAS statements>RUN;DATA _NULL_;FILE 'raw-data-file-name’;PUT specifications;<additional SAS statements>RUN;30Замечания про работу с внешними файлами Файлы можно читать с очень разных устройств, в том числе: PIPE, SOCKET, HADOOP, WEBDAV, FTP и т.д., например:INFILE dummy ftp user='myuid' pass='xxxx' filevar=file_to_read; Можно задавать кодировку и другие параметры Работает много опций стандартных наборов данных: OBS, END и другие В переменной _infile_ лежит текущий буфер Можно работать (читать/писать) с несколькими файлами сразу: задав несколько INFILE или FILE, и даже переключая их «на лету» с помощью опции FILEVAR:Чтение данных с помощью форматированноговводаОбщий формат оператора INPUT с форматированным вводом:INPUT pointer-control variable informat .

. . ;Форматированный ввод используется для чтения значений данныхпосредством: перемещения указателя ввода в начальную позицию для чтенияполя; присвоения имени переменной; указания входного формата (также определеят ширину поля)Пример.input @5 FirstName $10.;@nперемещает указатель в n символ.+nперемещает указатель на n символов.Пример спецификации INPUTОпределяется начальная позиция, имя переменной и входной форматдля каждого поля ввода.Структура: offers.datОписаниеФрагмент файла offers.datСтолбецТип клиента1–4Дата предложения5–12Группа позиции14–21Скидка22–2411221---5----0----5----0----5104012/02/07 Outdoors15%202010/07/07 Golf103009/22/07 Shoes7%10%103009/22/07 Clothes 10%202007/08/07 Clothes 15%203007/08/07 Clothes 25%input @1 Cust_type 4.@5 Offer_dt mmddyy8.Выполнение: форматированный вводЗаполняется оператором INPUT на каждойитерации цикла чтения наблюдений12Буфер ввода1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 53 0 1 0 0 5 / 1 7 / 0 7C l o t h e s1 5 %Инициализируется на основе специфиации INPUTPDVCust_typeN 83010Offer_dtItem_gpN 8$ 817303 ClothesDiscountN 8.15Несколько операторов INPUT для работы сосложно структурированными файламиПо умолчанию SAS загружает новую запись в буфер ввода, когда встречаетоператор INPUT (не очищая PDV)Можно ввести несколько операторов INPUT в одном шаге DATA.DATA SAS-data-set;INFILE 'raw-data-file-name’;INPUT specifications;INPUT specifications;<additional SAS statements>RUN;1121---5----0----5----0----5Ms.

Sue Farr15 Harvey Rd.Macon, GA31298869-7008Пример:2Dr. Kay B. Cox163 McNeil Pl.Kern, CA483-332193280Сложно структурированные файлы иусловная обработка записей при чтенииsales.dat• Пример• Казалось бы все просто:112231---5----0----5----0----5----0101USA 1-20-2007 3295.503034 EUR 30JAN2007 1876,30101USA 1-30-2007 2938.00128USA 2-5-20072908.741345 EUR 6FEB20073145,60109• Но не работает!!!!SaleID1011011345USA 3-17-2007 2789.10LocationSaleDateAmountUSAUSAEUR.17202..2908.74278910.00• Почему? INPUT «переводит строку», перечитывая буфер36Одиночный конечный символ @Одиночный конечный символ @ сохраняет запись необработанных данных вбуфере ввода, пока SAS выполняет одно из следующих действий: выполняет оператор INPUT без конечного @; начинает следующую итерацию шага DATA.Общий формат оператора INPUT с одиночным конечным @:INPUT specifications … @;Предыдущий пример теперь работает:SaleID10130341011281345109LocationSaleDateAmountUSAEURUSAUSAEURUSA1718617196171961720217203172423295.501876.302938.002908.743145.602789.10Чтение текстовых файлов с разделителями• Разделителем по умолчанию является пробел.• В оператор INFILE можно добавить параметр DLM=, чтобы задать другойразделитель, например запятую, табулятор DLM=’09’x и даже несколькосимволов для одного разделителя;• Общий синтаксис шага DATA для использования ввода списка для чтенияфайлов с данными, разделенными запятыми:DATA output-SAS-data-set;LENGTH variable(s) $ length;INFILE 'raw-data-file-name' DLM=',';INPUT variable-1 <$><variable-2 <$>…variable-n>;<additional SAS statements>RUN;• Могут возникать следующие проблемы пропущенные данные в конце записи; пропущенные данные «внутри» записи, представленные последовательнымиразделителями; несколько наблюдений в одной записи.Пропущенные значения в конце записиПо умолчанию, если в конце строки есть пропущенные данные, тоSAS выполняет следующие действия: загружает следующую запись в буфер, чтобы завершить наблюдение; записывает примечание в журнал.Пример:phone.csv112233441---5----0----5----0----5----0----5----0----5James Kvarniq,(704) 293-8126,(701) 281-8923Sandrina Stephano,(919) 871-7830Cornelia Krahl,(212) 891-3241,(212) 233-5413Karen Ballinger,(714) 344-4321Elke Wallstab,(910) 763-5561,(910) 545-3421В некоторых строкахданных отсутствуетномер мобильноготелефона.Параметр MISSOVERПараметр MISSOVER отключает загрузку новой записи, когда достигнут конецтекущей записи (по умолчанию FLOWOVER – продолжает читать файл, чтобызаполнить буфер)Общий формат оператора INFILE с параметром MISSOVER:INFILE 'raw-data-file' MISSOVER;Если достигнут конец строки, но не найдены значения для всех полей, топеременные без значений задаются как пропущенные.Пример:NameJames KvarniqSandrina StephanoCornelia KrahlKaren BallingerElke WallstabPhone(704)(919)(212)(714)(910)293-8126871-7830891-3241344-4321763-5561Mobile(701) 281-8923(212) 233-5413(910) 545-3421Идущие подряд разделителиПо умолчанию два или более идущих подряд разделителей в вводе спискаобрабатываются как один разделитель, а не как пропущенное значение.Пример: phone2.csv112233441---5----0----5----0----5----0----5----0----5James Kvarniq,(704) 293-8126,(701) 281-8923Sandrina Stephano,, (919) 271-4592Cornelia Krahl,(212) 891-3241,(212) 233-5413Karen Ballinger,, (714) 644-9090Elke Wallstab,(910) 763-5561,(910) 545-3421Параметр DSD для оператора INFILE:INFILE ‘file-name’ DSD; задает запятую разделителем по умолчанию; обрабатывает идущие подряд разделители как пропущенные значения; позволяет SAS читать значения с находящимися внутри значенийразделителями, если значение заключено в кавычки.Чтение списков наблюдений• Если одна строка входного файла содержит нескольконаблюдений, например:• Естьcharity.dat112231---5----0----5----0----5----0AQICS495279875 ESCCICU290200780FFC 0CNI 249DAIMI 745SBA 900 V2 550 YYCR 0IDAmount• Надо получитьAQICCICNICSCUDAI49520024927978087542Двойной конечный символ @@Двойной конечный @ сохраняет запись необработанных данныхмежду итерациями шага DATA, пока указатель строки не перейдет запределы конца строки.INPUT var1 var2 var3 … @@;Двойной конечный @ следует использовать только при вводе списка.Пример:Буфер ввода121 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9A Q I4 9 5PDVID$ 4AQIAmountN 8495C C I2 0 0C N I2 4 9Сравнение одиночного конечного @и двойного конечного @ПараметрЭффектСохраняет запись с необработанными данными, пока:@или@@не встретится оператор INPUT без конечного @не начнется следующая итерация шага DATA.Сохраняет запись с необработанными данными вбуфере ввода, пока SAS не прочитает данные за концомстроки.Запись текстовых файлов• Все конструкции синтаксически аналогичны чтению, ноinfile=>file, input=>put• Запись файлов с фиксированным размером полей:• Запись файлов с разделителямиБинарные файлы• Рассматриваются как частный случай текстовых• опция у INFILE или FILE RECFM=N• Могут представлять собой поток••••байт – формат $CHAR1машинных слов – формат $CHAR2, $CHAR4, $CHAR8записей фиксированной длины $CHARwа можно работать и через direct access c помощью указателя @ как длятекстовых файлов с фиксированными полями• Доступ к элементам записи или слова через SUBSTRING• Пример (читать по слову из 2х байт, предпологая формат целогочисла со знаком и корректно определять знак):46.

Характеристики

Список файлов лекций

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