跳到主要內容

[SAS] 利用PROC IMPORT匯入外部資料

因為資料來源的不同,所以拿到的資料格式往往各式各樣,可能是Excel的xls,xlsx檔,SPSS的sav檔,STATA的dta檔,txt純文字檔,csv檔,dat原始資料檔等等。SAS雖然能使用Import Wizard匯入其他統計套裝軟體和Excel資料,但以我過去的經驗來講,套裝軟體之間的發行時間差太多,或是作業系統因素(參考 【SAS 9.3小技巧】SAS 9.3 64位元版匯入Excel?! ),常常會讓這個功能折騰使用者老半天,所以建議在原生軟體先把資料存成純文字檔讓SAS來讀取(建議存成CSV檔,以逗號來區隔資料的純文字格式),今天將介紹如何用SAS內的PROC IMPORT敘述句來匯入純文字格式的外部資料。(.dat原始資料還是要使用FILENAME+INFLIE敘述句來匯入)

PROC IMPORT的語法結構

PROC IMPORT
 DATAFILE="filename"
 OUT=<libref .="">SAS data set
 DBMS=identifier
 REPLACE;
 GETNAMES=YES|NO;
 GUESSINGROWS=n; DELIMITER=char|'nn'x;

選項說明

  1. DATAFILE="filename"
    宣告待匯入的檔案位置
  2. OUT=<libref .="">SAS data set
    宣告匯出的目標資料集
  3. DBMS=identifier
    宣告匯入的檔案類型,選項有CSV(以逗點區隔),DLM(以空白或符號區隔),TAB(以TAB區隔),JMP
  4. Replace
    宣告匯入的資料覆寫現有的資料集,系統預設是不覆寫,如不宣告則可能導致匯入資料重複,務必注意。
  5. GETNAMES=YES|NO
    宣告是否將資料的第一行當作變項名稱
  6. GUESSINGROWS=n
    PROC IMPORT會自動掃描匯入資料來判斷該變項的類型(數字or文字or日期)與變項的長度,如果資料內的變項長度屬固定值,ISBN、身分證字號,則不需考慮此項目,但如果資料長度是變動的,通常是文字變項,如地址、email等,則此變項需要考慮。預設值是20,固定變項者可以減少該數值以加快匯入速度。
  7. DELIMITER=char|'nn'x
    宣告資料分隔符號,預設值是空白,如設&為區隔符號則DELIMITER="&"。只有當DBMS=DLM時才宣告DELIMITER,DBMS=TAB與DBMS=CVS時皆可省略。

範例

範例一:以TAB區隔的資料
下列資料位置在D:\Data之下,檔名為tab.txt,欲建立在名為mydata的Libary之下,匯入的資料集為tab
Name Gender Age
Joyce F 11
Thomas M 11
Jane F 12
Louise F 12
James M 12
John M 12
Robert M 12
Alice F 13
Barbara F 13
Jeffery M 13
Carol F 14
Judy F 14
Alfred M 14
Henry M 14
Jenet F 15
Mary F 15
Ronald M 15
William M 15
Philip M 16
範例程式1:
PROC IMPORT DATAFILE="D:\DATA\TAB.TXT" OUT=MYDATA.TAB DBMS=TAB REPLACE; GETNAMES=YES; DATAROW=5; RUN; ※上述資料如果直接複製到記事本會變成以空白做間隔的檔案,因此重新調整為以Tab做間隔之後程式就能順利運作。
範例二:以&為區隔符號的資料
下列資料位置在D:\DATA之下,檔名為DelSpec.txt,同樣欲建立在名為Mydata的Libary之下,匯入的資料集名稱為data01 Region&State&Month&Expenses&Revenue
Southern&GA&JAN2001&2000&8000
Southern&GA&FEB2001&1200&6000
Southern&FL&FEB2001&8500&11000
Northern&NY&FEB2001&3000&4000
Northern&NY&MAR2001&6000&5000
Southern&FL&MAR2001&9800&13500
Northern&MA&MAR2001&1500&1000
範例程式2:
PROC IMPORT
DATAFILE="D:\DATA\DELSPEC.TXT"
OUT=MYDATA
DBMS=DLM
REPLACE;
DELIMITER="&";
GETNAMES=YES;
RUN;

範例三:CSV格式檔(資料以逗號做區隔)
下列資料位置在D:\DATA之下,檔名為Newdata.csv,同樣欲建立在名為Mydata的Libary之下,匯入的資料集名稱為data02 "Africa","Boot","Addis Ababa","12","$29,761","$191,821","$769"
"Asia","Boot","Bangkok","1","$1,996","$9,576","$80"
"Canada","Boot","Calgary","8","$17,720","$63,280","$472"
"Central America/Caribbean","Boot","Kingston","33","$102,372","$393,376","$4,454"
"Eastern Europe","Boot","Budapest","22","$74,102","$317,515","$3,341"
"Middle East","Boot","Al-Khobar","10","$15,062","$44,658","$765"
"Pacific","Boot","Auckland","12","$20,141","$97,919","$962"
"South America","Boot","Bogota","19","$15,312","$35,805","$1,229
" "United States","Boot","Chicago","16","$82,483","$305,061","$3,735"
"Western Europe","Boot","Copenhagen","2","$1,663","$4,657","$129"
範例程式3:
PROC IMPORT
DATAFILE="D:\DATA\NEWDATA.CSV"
OUT=MYDATA.DATA02
DBMS=CSV
REPLACE;
GETNAMES=NO;
RUN;

附註:

有些時候會因為情況特殊需要特別處理,譬如大多數樣本的A變項是數值,但某些比較特別的個案在A變項卻是文字,這時候如果沒有處理,IMPORT敘述句就會以數字匯入,並且將A變項是文字的個案變成遺漏值,如果這樣的狀況會影響到後續的資料分析,可以參考這篇文章的做法:以文字格式讀取CSV資料檔中的欄位(變項)

參考資料:

IMPORT Procedure
Avoid truncating characters in PROC IMPORT csv

本著作依據Creative Commons 姓名標示-非商業性-相同方式分享授權條款釋出

留言

熱門文章

[How To] VPN Gate:由日本筑波大學所營運的免費VPN服務

一般使用者會接觸到VPN,最常見的情況就是想訪問被封鎖的網站、匿名上網、又或者想使用某些限定國家或區域的線上服務、遊戲等等。如果使用者不想付費購買VPN服務,這時候可以利用筑波大學以學術研究為目的而營運的 VPN Gate 來達成,VPN Gate這項計畫的目的在於推廣「全球分散式公共VPN中繼伺服器」的相關知識,為此VPN Gate的中繼伺服器由世界各地的志願者所提供的,用戶無須註冊就能使用,並且支援Windows、Mac、iPhone、iPad、Android等不同的作業系統,連線方式除支援SSL-VPN協議(必須使用Softether VPN)外,各伺服器的維護者也能選擇是否支援L2TP/IPsec、OpenVPN、Microsoft SSTP等不同的網路協議,這次我要介紹的是透過Softether VPN Client搭配VPN Gate Client Plugin來進行連線的方法。

[How To] 關閉Windows 10檔案總管「最近使用過的檔案」功能

剛開始使用Windows 10的使用者,應該會發現檔案總管跟過去有點不同,一打開就會顯示「最近使用過的檔案」。如果電腦只有使用者自己在使用,那的確是挺不錯的功能,但如果是和家人共用的情況下,也等於是直接把最近開對於啟檔案的紀錄暴露出來,對於我這種害羞內向的人來說與公開處刑無異,是個絕對NG的功能。 因此這次就是要告訴各位要怎樣把「最近使用過的檔案」這個NG的功能給關閉,並且將檔案總管的初始畫面調整成過去使用者所熟悉的「我的電腦」。 ▲在未關閉「最近使用過的檔案」的情況下,檔案總管的初始畫面會如上圖這般。

[How To] 如何將Windows10的數位授權連結(綁定)Microsoft帳號?

前一篇網誌是我在2016年6月那時所寫的,轉眼間現在已經到了2017年年底,雖然中間也不是沒有興起想寫網誌的念頭,但那段期間的生活上也不像過去那般有餘裕,直到最近社畜的生活比較上軌道後,才有機會來想想要寫些什麼。 這次要介紹的是Windows10的數位授權連結,換句話說就是將使用者的微軟帳號( 申請新帳號 )與Windows10的授權綁定。這樣做對使用者會有什麼好處?在你未來要將安裝Windows10的電腦淘汰時,Windows10授權不再是綁定電腦的主機板,而是綁定微軟帳號,所以只要在將擁有Windows10授權的微軟帳號做為新電腦的系統管理員帳號,就可以在新的電腦上使用前一台電腦上的Windows10授權,當然前一台電腦將不再有Windows10的授權。有關 硬體變更(包括更換主機板)之後重新啟用Windows10 的相關說明可以參考微軟的這篇: 硬體變更之後重新啟用 Windows 10 。

[How To] 還不知道怎樣低調還原的鄉民看這裡

本文絕對沒有叫鄉民去領便當的意圖(?)。在批踢踢上的某些專版,會因為某些特別的需要,所以必須使用低調碼來傳遞訊息。有沒有效果當然是見人見智,但板規這麼寫,也只好這麼做。

[How To] VLC Media Player影片錄製及截圖功能介紹

前陣子才剛寫過網誌 介紹VLC Media Player 這套影音播放程式,它是我目前在 MPC-HC專案終結 以後的替代方案,VLC Media Player跨多種平台(Windows, Mac OSX, Linux, Android, iOS )、並且廣泛支援各種影音格式,並且無須經過太複雜的設定即可上手。這次我就來說一下,VLC Media Player錄製影片片段以及製作影片截圖的功能該如何使用。

[How To] 在Windows10 家用版啟用本機群組原則編輯器功能(GPedit.msc)

一直以來Windows 10 家用版因為無法啟用「本機群組原則編輯器(GPedit.msc)」,使得不少要有GPedit.msc功能才能調整的設定。譬如Windows更新政策,就會受限於沒有GPedit.msc而無法調整,所以我都將Windows 10 家用視為閹割版,並不建議朋友購買,寧可多花一點錢買專業版。 小秘訣: 如何檢測Windows10的版本?以快捷「 WinKey+R 」叫出「執行」功能,並以「 winver 」關鍵字執行,就會出現「關於Windows」視窗,上面就有記載Windows10的版本。 最近因為 Windows 10 1809版更新的災情 鬧得沸沸揚揚,和朋友聊天的時候又聊到Windows10以來的這一連串災難,這時候我才知道原來我的資訊已經落伍了,Windows 10的家用版其實也可以啟用GPedit.msc,只是需要下指令來執行。今天我就來說明Windows 10家用版的使用者,該如何正確啟用「本機群組原則編輯器(GPedit.msc)」這項超重要的功能。

[How To] 影音播放器 MPC-HC 1.7.1 初學者設定教學

注意: 目前MPC-HC 開源專案已於v1.7.13結束( 資訊來源 ),建議使用者改用另一款開源影音播放器: VLC Media Player ( 相關介紹 )。 這幾年如果談到Windows上的影音播放器,許多人想到的不是KMPlayer就是PotPlayer。但其實除了這兩款之外,還有以Media Player Classic為基礎繼續開發的MPC-HC可以選擇。MPC-HC由於預設功能的關係,所以給人一種沒有前兩款影音播放軟體來得好用的印象,其實只要經過幾個簡單的步驟,MPC-HC就能夠符合大多數人的需求。 軟體資訊 軟體名稱:MPC-HC 作業系統:Windows® XP SP3, Vista, 7, 8 both 32-bit and 64-bit 語言介面:支援正體中文 最新版本:1.7.1 官方網站: http://mpc-hc.org/ 下載頁面: http://mpc-hc.org/downloads/ 重大事項:由於MPC-HC v1.6.8有緩衝區溢位的漏洞,因此官方強烈建議更新至v1.7.0之後的版本。(2013/10/06更新)

[How To] 使用Gpg4Win進行電子郵件加密提升個人隱私

 網路用戶的隱私問題這陣子鬧得沸沸揚揚,像是 Gmail最近在一起訴訟中被指控檢視用戶的郵件 ,而且還有 研究指出臉書、推特、以及谷歌這類的服務提供商會檢視用戶的訊息 ,並且點開只有用戶才知道的網路連結。 相較於臉書、推特這類的社交服務,用戶透過電子郵件來傳遞的訊息可能會有較高的隱私需求,要解決這種問題最終極的作法就是花錢買網域名稱,然後架設一台Email主機來收發電子郵件。然而這種作法對一般大眾而言並不符成本,為此郵件加密就是一種比較可行的解決之道。 今天要介紹的郵件加密套件─ Gpg4Win是GnuPG的Windows版本,而GnuPG根據IETF訂定的OpenPGP技術標準設計,因此GnuPG可以與PGP還有其他的OpenPGP系統相容[ 資料來源 ]。 GnuPG運作的基本原理很簡單,GnuPG會產生一對金鑰,一個是私鑰、另一個是公鑰。使用者A將公鑰交給要發送訊息給使用者A的使用者B,讓使用者B用公鑰加密要傳遞的訊息。等使用者A收到訊息以後再用私鑰來解密使用者B加密過的訊息。原則上用公鑰加密過的訊息,只有私鑰的所有人才能將其解密閱讀。除了文字訊息以外,GnuPG也可以用來加密檔案。 軟體資訊 軟體名稱:Gpg4Win 授權方式:GNU GPL 作業系統:WindowsXP以上。 介面語言:英語、德語 最新穩定版本:2.2.0 官方網站: http://www.gpg4win.org/ 下載頁面: http://www.gpg4win.org/download.html 分流載點: https://mega.co.nz/#!SNdnlY5Q!SlWYZwjlSGD7-dcNkVXTPFAJ9l4it2LS0vY6LYyT00Q MD5:  52DD8671CEA917302C53D594EB4838B8 SHA1 checksum:  0c7e01c4a39029c6d3fa88c0d1d1f2388fdb5151

[How To] Fate/Grand Order (F/GO)引繼教學(日文版)

當你下定決心要跳入Fate/Grand Order這個錢坑手遊之後,最重要的事情就是產生一組引繼碼。 倘若你手機遺失、手機損壞又或者是因為蘋果的惡意,要救回F/GO的進度時,輸入引繼碼就像是告訴伺服器,我就是某某某玩家,請把我過去的紀錄與這台手機連結這樣。如果沒有有效的引繼碼,就只能進行 帳號遺失申訴 ,這時就必須提供營運課金相關的紀錄(提供這個帳號曾經使用過已經無效的引繼碼也可),否則就無法證明帳號確實屬於你所有,救回帳號的機會當然也救大大地降低,所以當你確定你要好好的玩F/GO時,最重要的就是 建立一組引繼碼 。 不過千萬要記得 一組引繼碼只限使用一次的原則 ,引繼碼使用過後就必須重新產生一組引繼碼,接下來就說明取得引繼碼的相關步驟。