R2 | #30天專注橙長計劃#~SAS~Day 08



第二章 將你的數據放入SAS(2.1-2.11)

2.1 將你的數據放入SAS的方法

你可能有各種形式的數據,包括手寫在紙上、存放在電腦上、或是在數據庫管理系統里,不論如何,總有一種方法可以讓SAS來讀取。

SAS讀取的數據的方法主要有以下幾種類型:

? 直接輸入;

? 從原始數據文件中創建一個SAS數據集(creating SAS data sets from raw data files);

? 將其他軟件中的數據文件轉換成SAS數據集;

? 直接讀取其他軟件的數據集;

直接輸入

? Viewtable窗口可以讓你以表格形式輸入數據,可以定義變量、設置屬性,如name、length和 type(character or numeric).

? SAS 企業向導模塊,a Windows only application,has a data entry window that is very similar to the Viewtable window.As with Viewtable,you can define variables and give them attributes.

? SAS/FSP 模塊,是Full Screen Product的簡稱,可以設計定制的數據輸入窗口,也有檢測數據輸入錯誤的功能(The SAS/FSP product is licensed separately from Base SAS software.)。

從原始數據文件中創建一個SAS數據集 你有兩種方法讀取原始數據文件:

? 數據步可以讀取任何形式的原始數據文件,這種方法還將在2.4中詳解。

? 導入向導(Import Wizard)、導入過程(IMPORT procedure)適用于UNIX、OpenVMS和 Windows操作環境的簡單方法,可以讀取CSV(comma-separated values)和其他一些限定的文件類型。

將其他軟件中的數據文件轉換成SAS數據集 如果數據在一個軟件中以某種格式存放,但需要用另一種軟件分析時,就會很麻煩。有幾種方法可以將某種軟件中的數據轉換成SAS數據集:

? 如果安裝SAS/ACCESS模塊,可以用導入過程(import procedure)和導入向導(Import Wizard)將Excel、Lotus、dBase和Access文件導入SAS數據集,見2.3和2.17(?)。

? 如果沒有安裝,可以用存放數據的軟件創建一個原始文件,并用數據步或導入過程(import procedure)讀取。很多軟件都可以創建CSV文件。

? Windows操作環境下也可以用動態數據交換技術(Dynamic Data Exchange,DDE),見2.18。前提是必須有一個其他的Windows程序與SAS同時運行,再使用DDE和數據步。

直接讀取其他軟件的數據集

? SAS/ACCESS產品可以不用轉換數據格式讀取數據,并適用于大部分大部分數據庫管理系統,包括ORACLE,DB2,INGRES和 SYBASE(但使用方法本書沒有介紹)。

? 使用Excel engine和Access engine來讀取這兩種類型的數據。(SAS幫助文檔)

? 還有其他的一些數據引擎(data engines)來讀取數據,如SPSS engine(附錄D),查找幫助文檔找到適合你操作環境的所有有效engine。

2.2 用Viewtable窗口輸入數據

調用Viewtable窗口,在工具欄的下拉菜單中選擇表編輯器(Table Editor)


列屬性窗口 每一列頂部的字母是默認的變量名,右擊變量名,即可打開列屬性(column attributes)窗口,設置屬性之后,點擊應用(apply),設置完后關閉即可。


輸入數據


保存表 選擇文件(file)——另存為(save as),選擇一個邏輯庫保存,如果想保存在新的邏輯庫,點擊創建新邏輯庫圖表(New Library),輸入邏輯庫的名字和保存路徑。

打開一個已有的表 首先打開表編輯器,選擇文件(file)——打開(open)。打開之后,SAS默認的是瀏覽模式,如果要對數據進行編輯,則要在編輯(edit)菜單中選擇編輯模式。也可以在資源管理器窗口中雙擊打開一個已有的表。

其他功能 其他一些功能包括排序、打印(printing)、增加和刪除行、一次瀏覽一行(窗體視圖Form View)、一次瀏覽多行(表視圖 Table View)。圖標和菜單都可以選擇這些功能。

在SAS程序中使用表 如下程序語句可以將表內容輸出打印:

PROC PRINT DATA=Sasuser.coffee;

RUN;

2.3 用導入向導(Import Wizard)讀取文件

導入向導會瀏覽你的文件以決定變量的類型,并默認數據表的第一行存放變量名。

第一步,從文件(file)下拉菜單中選擇導入數據(import data)導入向導(Import Wizard)


第二步,從standard data sources中選擇要導入的數據類型。以comma separated values(*.csv)為例。點擊下一步

第三步,指定要導入的文件位置,SAS默認第一行存放變量名,從第二行開始存放數據。Options可以改變這種默認選擇。


第四步,選擇數據集要存放的邏輯庫,并為數據集取一個名字(member)。


最后,導入向導創造一個proc import語句,可以是SAS再次導入這個數據。


另外,對于一些類型的數據文件還有額外的步驟,比如Microsoft Access文件,你需要輸入數據庫名和藥導入的表名,有時甚至還要輸入user的ID號和密碼。

在SAS程序中使用導入數據 比如你將數據存放在work邏輯庫,并署名為flowers,那么你可以這樣來輸入它:

PROC PRINT DATA=WORK.flowers;

RUN;

由于work是默認的邏輯庫,所以也可以直接這樣:

PROC PRINT DATA=flowers;

RUN;

2.4 告訴SAS你的原始數據在哪

如果數據是原始數據(比如text,ASCII,sequential,flat files),那么用數據步來讀取能帶給你最大的靈活性。但首先你要告訴SAS你的原始數據在哪。

原始數據可以通過文本編輯器(text editors)或系統命令。對PC使用者來說,原始數據沒有相關聯的應用程序(就像doc文件與word相關聯,雙擊doc程序就默認調用word程序以打開),有時他們會與像Microsoft Notepad這樣的簡單編輯器相關聯。

內部原始數據 如果直接將數據輸入SAS程序中,那么數據就是SAS內部數據。DATALINES是一個指示,告訴SAS下面跟著是數據行,直到分號結尾,這個分號可以另起一行,也可以接在數據的后面。也可以用card代替DATALINES。下面是一個程序,這個程序創建了一個USPRESIDENTS數據集。(Input語句還將在2.5和2.15中討論)

外部原始數據 數據外SAS程序外部時,使用INFILE語句告訴SAS外部數據的文件名和存放路徑,它在data語句之后,在INPUT語句之前。INFILE后面的文件名和路徑要用引號,各種系統的引用方式各不同:

假設有一個President.dat數據在你的C盤的MyRawData目錄中,

那么可以用如下方式引用這個外部數據:

SAS日志 讀取外部數據時,SAS日志會給一些很有用的信息,檢查這些信息可以解決一些問題,比如對比INFILE語句讀取的記錄數和數據集中實際觀測值,可以確定SAS是否正確的讀取了數據。上面程序的日志如下圖所示,


過長記錄 在一些操作環境中,SAS假定外部數據文件的記錄長度為256或更少(記錄長度是指某行中的字符數,包括空格),如果長度過長,SAS不能讀取全部,此時需要在INFILE語句中使用LRECL=來指定長度,這個長度必須是數據中最長行的長度,如:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? INFILE’c:\MyRawData\President.dat’LRECL=2000;

可以通過SAS日志來查看最大記錄長度。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,362評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,013評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,346評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,421評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,146評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,534評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,585評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,767評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,318評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,074評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,258評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,828評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,486評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,916評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,156評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,993評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,234評論 2 375

推薦閱讀更多精彩內容