Основы Программирования На Sas Base. Урок 3. Чтение Текстовых Файлов

В предыдущем статья Мы познакомились с понятием библиотеки SAS, узнали, как назначить библиотеку файлу Excel, а также узнали о процедуре создания детализированных отчетов.

Напоминаю, что скачать программу можно по адресу сайт САС , ссылка на документацию по установке SAS UE представлена в статья №1 .

В этой статье вы узнаете несколько способов чтения текстовых файлов.



Основы программирования на SAS Base. Урок 3. Чтение текстовых файлов

Все примеры основаны на файлах, которые хранятся в каталоге c:\workshop\habrahabr и заранее созданы в Блокноте.

Чтобы создать набор данных SAS из текстового файла, первый из них необходимо проанализировать, чтобы правильно выбрать тип чтения текстового файла.

Текстовый файл может содержать как стандартные, так и нестандартные данные.

Стандартные данные — это данные, которые SAS считывает без каких-либо инструкций, например, значение переменной Salary в текстовом файле сохраняется как 12355,44 или дата уже записана как стандартная дата SAS ( см.

Урок 1 ).

А если вам нужно обработать значение, например, $12 355,44 или 01.01.2018, то вам нужно указать правило чтения, инструкцию, по которой эти значения преобразуются в формат SAS. В этой статье кратко описывается, как использовать оператор INPUT для преобразования необработанных данных в наборы данных SAS.



Чтение текстового файла со стандартными данными с разделителями.

Давайте рассмотрим простой пример текстового файла.

Файл менеджеры1.dat представляет собой текстовый файл, разделенный запятыми, и выглядит следующим образом:

Основы программирования на SAS Base. Урок 3. Чтение текстовых файлов

Новый набор данных SAS должен содержать следующие переменные: идентификатор, имя, фамилия, должность, страна, пол, зарплата.

Вы можете заметить, что данные, хранящиеся в этом файле, стандартны и SAS читает их без проблем.

Чтение текстового файла реализуется с помощью операторов INFILE и INPUT на этапе DATA. Подробно оператор INFILE можно изучить в справочнике.

Формулировки шагов SAS 9.4 DATA: справка .

Инструкция INFILE указывает внешний файл для чтения.

Общий синтаксис оператора:

  
  
  
  
  
  
  
  
  
   

INFILE file-specification<device-type><options><operating-environment-options>;

спецификация файла – идентифицирует источник данных, это может быть внешний файл или ссылка на внешний файл.

тип устройства – метод доступа.

параметры - действительные варианты.

параметры операционной среды – параметры рабочей среды.

В нашем конкретном случае оператор INFILE будет записан следующим образом:

infile "c:\workshop\habrahabr\managers1.dat" dlm=',';

ДЛМ= (или разделитель=) — это опция оператора INFILE, которая указывает альтернативный разделитель (пробел — разделитель по умолчанию), который будет использоваться для чтения внешнего файла.

Список разделителей указывается в двойных кавычках.

После того, как мы установили путь, нам нужно установить имена переменных.

Оператор поможет нам решить эту проблему ВХОД .

Общий синтаксис оператора INPUT:

INPUT <specification(s)> <@ | @@>;

Характеристики) – может включать в себя переменные, списки переменных, атрибут типа текста ($), указатель-управление, спецификацию столбца, форматы чтения и т. д. (подробнее в справочнике) Формулировки шагов SAS 9.4 DATA: справка ).

@ — спецификатор удержания строки.

Оператор INPUT в нашем случае запишется так:

input ID First_Name $ Last_Name $ Job_Title $ Country $ Gender $ Salary;

Опять же, чтение текстового файла происходит на этапе ДАННЫЕ, поэтому код, необходимый для чтения текстового файла, будет выглядеть следующим образом:

data managers; infile "c:\workshop\habrahabr\managers1.dat" dlm=','; input ID First_Name $ Last_Name $ Job_Title $ Country $ Gender $ Salary; run;

Мы создаем временный набор данных SAS, называемый менеджерами, который будет храниться в библиотеке WORK до тех пор, пока сеанс SAS не будет закрыт ( см.

Урок 2 ) Давайте проверим, корректно ли работает код. Запустим программу и проверим журнал:

Основы программирования на SAS Base. Урок 3. Чтение текстовых файлов

Давайте распечатаем набор данных:

proc print data=managers; run;

Результат шага PROC PRINT:

Основы программирования на SAS Base. Урок 3. Чтение текстовых файлов

Обратите внимание, что текстовые значения в некоторых столбцах обрезаны.

Запустим процедуру PROC CONTENTS, чтобы определить длину созданных переменных:

proc contents data=managers varnum; run;

Опция VARNUM отображает переменные в том порядке, в котором они хранятся в таблице.

Фрагмент вывода процедуры:

Основы программирования на SAS Base. Урок 3. Чтение текстовых файлов



Переменная длина

По умолчанию SAS Base создает переменные любого типа длиной 8 байт. Чтобы избежать «усеченных» значений, длину необходимо указывать явно.

Эту задачу легко решить с помощью оператора ДЛИНА .

Важно знать, что этот оператор должен быть написан перед оператором INPUT; это связано с особенностями работы SAS Base. Итак, наш код с использованием оператора LENGTH будет выглядеть так:

data managers; infile "c:\workshop\habrahabr\managers1.dat" dlm=','; length First_Name $ 10 Last_Name $ 12 Job_Title $25 Country $2 Gender $1; input ID First_Name Last_Name Job_Title Country Gender Salary; run; proc print data=managers; run; proc contents data=managers varnum; run;

Мы указали тип переменной в операторе LENGTH, поэтому просто перечислили имена переменных в INPUT. Обратите внимание, что оператор INPUT перечисляет переменные в том порядке, в котором они появляются в исходном коде! Запустим программу и посмотрим результаты: Результат шага PROC PRINT:

Основы программирования на SAS Base. Урок 3. Чтение текстовых файлов

Результат выполнения PROC CONTENTS:

Основы программирования на SAS Base. Урок 3. Чтение текстовых файлов

Переменные отображаются в другом порядке.

Это связано с тем, что SAS Base считывает всё последовательно: сначала вводятся переменные из оператора LENGTH, и только потом проверяется INPUT, а набор данных дополняется переменными ID и Salary. Чтобы отображать столбцы в исходном порядке, мы можем явно установить длину переменных ID и Salary в операторе LENGTH. Минимальная длина числовых переменных составляет 3 байта, но имейте в виду, что изменение длины числовой переменной на меньшее значение может привести к потере точности числовых значений.

Таким образом, программа принимает следующий вид:

data managers; infile "c:\workshop\habrahabr\managers1.dat" dlm=','; length ID 8 First_Name $ 10 Last_Name $ 12 Job_Title $25 Country $2 Gender $1 Salary 8; input ID First_Name Last_Name Job_Title Country Gender Salary; run; proc print data=managers; run;



Постоянные атрибуты.

На этапе ДАННЫЕ мы зададим переменным постоянные атрибуты: формат и метку.

В этом случае атрибуты будут записаны в дескриптор выходного набора данных и будут использоваться на каждом этапе PROC.

data managers; infile "c:\workshop\habrahabr\managers1.dat" dlm=','; length ID 8 First_Name $ 10 Last_Name $ 12 Job_Title $25 Country $2 Gender $1 Salary 8; input ID First_Name Last_Name Job_Title Country Gender Salary; label

Теги: #sas base #Base SAS Software #имя библиотеки #proc print #proc Step sas #sas 9.4 #programming

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.