第一篇:BASE SAS分為數據步的作用及生成數據集的方式
我是學經濟相關專業畢業的,從事數據分析工作近一年,之前一直在用EXCEL,自認為EXCEL掌握的還不錯。
今年5月份聽說了SAS,便開始學習,這里總結分享下學習歷程及體會:第一本書是《SAS9.2從入門到精通》,從這本書學習到基本的SAS知識,可以作為入門教程。
(本文為原創,禁止復制或轉載,轉載請標明出處:http://www.cnblogs.com/smallcrystal/p/4830855.html )
一、數據步的作用是生成SAS系統能夠識別的數據集,包括對外部數據的處理(通過infile/import函數)、數據庫文件(通過libname 邏輯庫建立聯系)或內部輸入(input)。以“data ”開始,“run”結束。
- 內部生成數據集結構為:
data 數據集名;
input 變量名1 變量名2 $ @@;
cards;
輸入數據或字符以空格隔開 ;
run;
- 將MYSQL中的數據導入生成數據集,結構為:
libname 邏輯庫名 MYSQL user=登錄數據庫的用戶名 password=密碼 database=數據庫名;/*通過libname 邏輯庫建立與數據庫的聯系/
data 數據集名 set 邏輯庫.數據庫中的表名;
run;
- 讀入外部數據生成數據集,結構為:
(1)data 數據集;
infile ‘外部文件所在的位置及名稱及文件類型’ <選項>;/infile語句用來告訴SAS外部數據文件存儲位置/
input 變量1 變量2 ;
run;
(2)通過宏變量
libname 邏輯庫名;
%let 宏變量名1=’外部文件路徑‘;
%let 宏變量名2=’.文件類型‘;
filename 文件名 “&宏變量名1&宏變量名2”;/*定義文件名引用宏變量,&宏變量,用雙引號/;
(這樣外部文件已經被filename定義的文件名取代了,filename用來指定文件路徑所對應的邏輯名)
data 數據集;
infile 文件名 <選項>;/*讀取文件名,infile語句和filename語句配合使用/
input 變量名1 變量名2;
……
run;
(3)import讀取外部文件:以EXCEL為例
libname 邏輯庫名;
proc import out=輸出的數據集名 /*此處沒有分號/
datafile=’要導入的EXCEL文件的完整路徑及文件名.擴展名‘;
sheet=“表單名”;
getnames=yes;/第一行記錄的是字段名,否則為NO
run;
data 數據集;
set 輸出的數據集名;
run;
SAS系統可訪問的外部文件及讀取方式匯總:
TXT:INFILE/IMPORT
CSV:INFILE/IMPORT
EXCEL:INFILE/IMPORT
SPSS:IMPORT
MS ACCESS:ACCESS
ORACLE數據庫:LIBNAME方式、PASSTHROUGH方式
libname是SAS數據庫與其他數據文件實現數據交換的最主要的方式,可通過數據引擎讀入其他分析文件數據集及其他數據庫文件。
passthrough方式是通過connect語句建立SAS和其他數據庫之間的通信,並使用sql過程將其他數據庫數據直接導入到SAS系統。
