SAS - 讀取原始資料



SAS 可以讀取來自各種來源的資料,包括許多檔案格式。SAS 環境中使用的檔案格式將在下面討論。

  • ASCII(文字)資料集
  • 分隔資料
  • Excel 資料
  • 層次資料

讀取 ASCII(文字)資料集

這些檔案以文字格式包含資料。資料通常以空格分隔,但也可以使用 SAS 可以處理的不同型別的分隔符。讓我們考慮一個包含員工資料的 ASCII 檔案。我們使用 SAS 中提供的 **Infile** 語句讀取此檔案。

示例

在下面的示例中,我們從本地環境讀取名為 **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

讀取分隔資料

這些資料檔案中的列值以分隔符(如逗號或管道等)分隔。在這種情況下,我們在 **infile** 語句中使用 **dlm** 選項。

示例

在下面的示例中,我們從本地環境讀取名為 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;

執行上述程式碼後,我們將獲得以下輸出。

read_heirarchial_data2
廣告