跳到主要內容

[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] 還不知道怎樣低調還原的鄉民看這裡

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

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

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

[How To] 將手機分享的網路設定為計量付費連線,避免Windows Update吃光你的網路流量。(Windows10)

原本我的規劃是先寫Windows系統重設教學,但昨天發生了一件令人悲痛的事情,讓我決定先寫這個主題。 這裡先講一下事情經過,昨天我帶著筆電去參加教育訓練,接著像其他人一樣用手機分享網路供筆電使用,但是當教育訓練經過兩小時之後,Windows10突然跳出已經準備好Windows Update,電腦需要重新啟動的提示訊息。看到的當下眼前一片黑暗!所以Windows 10在我用手機分享網路給筆電時,默默地下載了Windows Update所需的檔案?可是我的手機並不是網路吃到飽啊!當下立刻用中華客服檢查 了這個月未出帳的網路流量,結果我當天就噴了高達700MB的流量!(我並不常使用筆電,所以累積了不少更新未下載。)

[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] 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的功能給關閉,並且將檔案總管的初始畫面調整成過去使用者所熟悉的「我的電腦」。 ▲在未關閉「最近使用過的檔案」的情況下,檔案總管的初始畫面會如上圖這般。

[分享] 台北市長候選人政見懶人包─柯文哲篇

這篇文章在我心中其實已經醞釀很久了,雖然目前台北市的三位主要市長候選人都有在各自的官方網站上公布政見,但以我自己瀏覽的經驗來講,這些官網都沒辦法讓民眾很輕易地就找到其所重視的政見,在 連勝文的明日台北 還有 馮光遠的夯台北 網站上,甚至沒有提供站內搜尋的功能,在設計上非常社群網站。而候選人的政見也未必能透過新聞媒體很好的傳達給民眾,或者經由對手在新聞上的操作而受到曲解。 有感於此,為了讓台北市的選民能夠更方便的瀏覽三位主要市長候選人的各項政見,我開始著手製作各個候選人的政見懶人包,而首先完成的就是這篇柯文哲篇,而當柯文哲、連勝文與馮光遠三人的政見懶人包都完成之後,如果有額外的時間我會對這三位候選人共通的政見(譬如:居住問題方面的政策)進行比較。總之,由於我的目標是希望能夠傳遞正確的資訊,如果在政見整理時有所疏漏,煩請在底下留言,我會盡我所能地盡速更新。 最後,在你開始看這篇文章之前,我想引用 《談論價值的重要性》 這篇文章的其中一段話:「當以後別人告訴你,要當個理性的選民,要回歸政策去討論的時候,也許你可以告訴他,你很樂意討論政策,但在討論政策之前,也許我們應該先討論一下,這個候選人,他相信的價值,到底是什麼,他又為自己的理念,付出了哪些努力,因此讓你可以檢視,他的政策,全盤看下來,是否和他的理念相符。也讓你可以相信,他真的會按照這樣的理念,去推動他的政策。」。 本懶人包的所有內容皆出自於 柯文哲官網 以及柯文哲醫師的幕僚 潘建志醫師所建置的Tumblr 與 柯P新政推廣影片 。 政見目錄 衛生福利政策 02 安心外食 10 緊急照護 11 家醫制度 12 銀髮照顧 18 食安・10安 25 貼心的醫療 29 公益企業 教育政策 09 課後及寒暑假照護班 13 優質高中職 26 創新實驗教育 動保政策 22 打造友善動物城市 政府運作 01 i-Voting 03 參與式預算 交通政策 04 道路統一挖補 15 解救血汗計程車 16 公車路線大調整 23 發展完整自行車網絡 文化政策 17 文化自治 20 打造台北文化夢工場 21 讓流行音樂迎向下一個日出 觀光政策 19 觀光, 讓世界愛上台北 能源政策 14 先進節能城市 居住政策

[APP] 快邀請身邊親友一同安裝「臺灣社交距離」App,確認生活中是否曾經接觸過確診者!

近日因為 諾富特桃園機場飯店發生武漢肺炎(2019冠狀病毒疾病,COVID-19)群聚感染 ,台灣的民眾又開始擔心自己是否曾在日常中與確診者接觸而不自知,所幸目前 台灣人工智慧實驗室 與 衛福部疾管署 合作推出一款名為「臺灣社交距離」的防疫App可以使用,今天這篇文章就是介紹這個APP的運作原理與限制。

[How To] 認識Windows 10內建的重灌功能 ─ 「重設此電腦」。

2018/11/5新增: 無法登入Windows10,「重設此電腦」的操作方式。 在Windows 8開始,Microsoft在Windows的還原選項增加一個叫做「重設此電腦」的功能,跟過去依賴還原點的「系統還原」運作方式並不相同。這裡先說明一下Windows「系統還原」的運作方式,Windows會在安裝應用程式、驅動程式、以及系統更新的同時自動建立還原點。如果遭遇到應用程式、驅動程式或者系統更新產生的問題時,就可以用系統還原的方式回溯到系統變更之前的狀態。 但要注意的是,這種還原方式並不會影響到個人檔案,所以當問題是發生在個人檔案時,因為系統並不會針對個人檔案的變動產生還原點,所以還原並無法解決問題,這也是為什麼由惡意程式導致的系統錯誤,用系統還原可能無法解決問題。 咳,有點離題了。總之系統還原是針對新安裝的應用程式、驅動程式,還有系統更新建立還原點。那如果最近沒有安裝新的應用程式、驅動程式還有系統更新,但電腦還是出了問題,那很明顯就不是系統還原可以處理的範圍,這時候我們就需要依賴Windows 8以後新增的「重設此電腦」這項功能了,登登登。

[Covid-19] 太狂了!免APP!任何手機都可以使用的簡訊實聯制服務

有鑑於各場所實行之實聯制有個資上的疑慮(實例可看: 女孩們怕不怕實聯制個資遭利用(開新視窗) ),為此行政院政務委員唐鳳2021/5/19召開 記者會(開新視窗) ,介紹了一個用政府建置的簡訊實聯制系統給全國民眾和商家,不用額外安裝APP、不用擔心商家不當利用個人聯絡資訊、也無需負擔簡訊費用,今天就來介紹該如何操作。