Учебники

SAS — чтение необработанных данных

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

  • ASCII (текстовый) набор данных
  • Данные с разделителями
  • Данные Excel
  • Иерархические данные

Чтение ASCII (текстового) набора данных

Это файлы, которые содержат данные в текстовом формате. Данные обычно разделяются пробелом, но также могут быть разные типы разделителей, с которыми может работать SAS. Давайте рассмотрим файл ASCII, содержащий данные о сотрудниках. Мы читаем этот файл, используя инструкцию Infile, доступную в SAS.

пример

В приведенном ниже примере мы читаем файл данных с именем emp_data.txt из локальной среды.

data TEMP; 
   infile 
   '/folders/myfolders/sasuser.v94/TutorialsPoint/emp_data.txt'; 
   input empID empName $ Salary Dept $ DOJ date9. ;
   format DOJ date9.;
   run;
   PROC PRINT DATA = TEMP;
RUN;

Когда приведенный выше код выполняется, мы получаем следующий вывод.

read_raw_data1

Чтение данных с разделителями

Это файлы данных, в которых значения столбцов разделены символом-разделителем, таким как запятая, конвейер и т. Д. В этом случае мы используем опцию dlm в операторе infile .

пример

В приведенном ниже примере мы читаем файл данных с именем emp.csv из локальной среды.

data TEMP; 
   infile 
   '/folders/myfolders/sasuser.v94/TutorialsPoint/emp.csv' dlm=","; 
   input empID empName $ Salary Dept $ DOJ date9. ;
   format DOJ date9.;
   run;
   PROC PRINT DATA = TEMP;
RUN;

Когда приведенный выше код выполняется, мы получаем следующий вывод.

read_raw_data1

Чтение данных Excel

SAS может напрямую читать файл Excel с помощью средства импорта. Как видно из главы «Наборы данных SAS», он может обрабатывать самые разные типы файлов, включая MS Excel. Предполагая, что файл emp.xls доступен локально в среде SAS.

пример

FILENAME REFFILE
"/folders/myfolders/TutorialsPoint/emp.xls"
TERMSTR = CR;

PROC IMPORT DATAFILE = REFFILE
DBMS = XLS
OUT = WORK.IMPORT;
GETNAMES = YES;
RUN;
PROC PRINT DATA = WORK.IMPORT RUN;

Приведенный выше код считывает данные из файла Excel и выдает тот же вывод, что и выше, для двух типов файлов.

Чтение Иерархических Файлов

В этих файлах данные представлены в иерархическом формате. Для данного наблюдения есть запись заголовка, ниже которой упоминается много подробных записей. Количество записей подробностей может варьироваться от одного наблюдения к другому. Ниже приведена иллюстрация иерархического файла.

В приведенном ниже файле перечислены данные каждого сотрудника в каждом отделе. Первая запись — это запись заголовка с указанием отдела, а следующая запись, несколько записей, начинающихся с DTLS, — запись сведений.

DEPT:IT 
DTLS:1:Rick:623 
DTLS:3:Mike:611 
DTLS:6:Tusar:578 
DEPT:OPS
DTLS:7:Pranab:632
DTLS:2:Dan:452
DEPT:HR
DTLS:4:Ryan:487
DTLS:2:Siyona:452

пример

Чтобы прочитать иерархический файл, мы используем приведенный ниже код, в котором мы идентифицируем запись заголовка с помощью предложения IF и используем цикл do для обработки записи сведений.

data employees(drop = Type);
   length Type $ 3  Department
      empID $ 3 empName $ 10 Empsal 3 ;
   retain Department;
   infile 
   '/folders/myfolders/TutorialsPoint/empdtls.txt' dlm = ':';
   input Type $ @;
   if Type = 'DEP' then 
      input Department $;
   else do;
      input empID  empName $ Empsal ;
      output;
   end;
run;

   PROC PRINT DATA = employees;
RUN;

Когда приведенный выше код выполняется, мы получаем следующий вывод.