跳到主要內容

[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 姓名標示-非商業性-相同方式分享授權條款釋出

留言

這個網誌中的熱門文章

[APP] 快下載「臺灣社交距離」App,確認生活中是否曾經接觸過確診者!

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

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

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

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

[How To] 使用Windows 10「工作檢視」(虛擬桌面)功能,避免太多的工作視窗導致工作效率下降。

若是熟悉Linux或MacOS的使用者,對於「虛擬桌面」這項功能肯定並不陌生,但是Windows要等到Windows10這個版本,才將虛擬桌面列為內建功能,不過由於時整合了過去的Alt+Tab功能,故這項功能在Windows底下被稱為「工作檢視」。 首先簡單的說明使用「工作檢視」這項功能對我們會有什麼幫助。Windows的使用者應該曾經有過這種經驗,因為工作需要而不斷地新增視窗,即便使用合併工作列按鈕,但工作列還是被各種視窗佔滿,光是找到需要的視窗就必須花費不少時間,進而導致工作效率下降。 這種情形下如果能將這些視窗進行分類管理,對工作進行將會有不少幫助,「工作檢視」這項功能就可以達到這項目的,透過「工作檢視」建立多個虛擬桌面,然後將不同需求的工作視窗放道不同的虛擬桌面中,第一個虛擬桌面用來進行工作規劃、第二個虛擬桌面用來執行臨時被交辦的業務,第三個桌面則是用來彙整會議用的相關資料等等,這篇網誌就是介紹該如何使用Windows10的「工作檢視」功能。

[How To] 不用關閉Windows Update,Windows 10家用版也有效的延後Windows update方法

在今年2月的時候,我曾經寫過一篇「 [How To] 關閉WIndows 10的驅動程式自動更新 」,當時文章中有提到如何使用「本機群組原則編輯器(GPedit.msc) 」調整Windows Update的時間,但是隨著Windows再度發生令人崩潰的更新災難,我決定調整前一篇文章的內容,在這篇文章好好說明有關更新的相關設定,這篇文章將不只適用專業版以上版本,同時也適用於Windows10家用版的使用者。 首先我們要先清楚Windows 10目前對於更新的分類,主要包括三大類: 功能更新:諸如1709、1803、1809這類每半年一次的版本更新,此類更新會引進行新的作業系統功能,但伴隨而來的,往往是讓使用者無言的花式更新災難。 品質更新:並未引進新的作業系統功能,除了安全性更新以外,也包含修正各種臭蟲的非安全性修補更新。 驅動程式更新:針對系統現有之驅動程式進行版本更新。 使用者對於現行更新政策常見的困擾有兩個,一個是下載與安裝更新的時間缺乏彈性,進而影響到主要工作。另一個就是更新的同時也帶來使用者預料之外的系統問題,像是1803版更新時 導致使用Intel SSD的使用者無法開機 外,這次1809版更新甚至發生 使用者資料夾底下的所有資料因為更新而被移除 這種令人笑不出來的情形,一般人對於這些事情的理解還停留在Windows更新實在很雷的層次,但根據Windows現行的設定,嚴格來講這些問題是由是1803、1809等功能更新所造成,跟品質更新(含安全性更新)的關係較小。 這篇文章分成兩個部分來說,第一個部分會先談如何從整體對Windows Update下載和安裝的時機進行調整,接著說明如何延後Windows接受功能更新而又不影響品質更新(含安全性更新)的安裝,降低使用者在資安上的風險。

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

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

[艦これ] KC3改 - Google Chrome的艦これ輔助工具

寫在最前頭的更新後記(2016/05/08) 這次的內容更新總算是告一段落了,在年初寫好KC3改的基本操作之後,因為各種原因而導致進度停擺,最近才比較能空出時間來介紹策略研究室的部分,然而隨著時間的推移,我對於使用上的見解其實也有所改變了,所以之前寫的部分也利用這次空檔一併更新,著實花了我不少時間呢,希望這樣的介紹你們會喜歡。不過還是有不少功能是我所沒有介紹的,有點遺憾呢。但目前我的時間實在很有限,再寫下去我今年的春活大概就打不完了(笑)。至於其他功能的介紹,可能就之後再找時間寫個短篇介紹這樣。 前言 在沒有任何輔助程式的情況下, 艦これ 這款遊戲會有不少時間是花在尋找裝備、逐一瀏覽艦娘的各項數值、計算遠征返航時間之類的瑣碎事情上。為了能夠更有效率的進行遊戲,許多提督兼軟體工程師替艦これ這款遊戲開發出各種第三方輔助程式,較常見的像是「 提督業も忙しい! 」(中文翻譯為 提督很忙 ,英文名稱為KanColleViewer,故簡稱為KCV)、功能強大的 七四式電子観測儀 、以JAVA進行開發的 航海日誌 以及由中國人所開發的 POI瀏覽器 等等。除上述工具以外,還有就是今天我要介紹的一款名為 KanColle Command Center 改 (簡稱為 KC3改 )的Google Chrome擴充套件, KC3改 可以快速的檢視艦隊資訊(血量、士氣值、裝備、索敵值、對空值...等等),進行中的任務會依照實際的情形顯示進度,遠征隊返回時還會跳出提醒視窗,對於只放遠征的提督來說也是相當方便,更重要的是,KC3改是開源軟體,並且有許多提督在對它進行維護,因此不會因為一兩個開發者退坑就導致版本更新停擺。因為KC3這款輔助程式是針對海外玩家為主要客群進行開發,因此內建了 烤餅乾 的功能,介面還提供多國語言(原生語言為英語,如果遇到翻譯看不懂就把介面轉成英語介面吧!)讓玩家選擇,接下來就讓我來為各位簡單介紹一下KC3改的使用方式和相關設定。