R資料處理-讀取固定欄寬格式的文字資料檔(.dat) [Stack Overflow練題001]

閱讀時間約 4 分鐘
若需要分析的資料是固定欄寬格式(Fixed Width Format, fwf)的純文字檔,需要透過ddf或sps工作檔正確指定欄位分隔、變項名稱,請看今天的練習。

資料處理的第一步是讀取資料檔,而資料檔格式五花八門,較常見幾種的有.sav、.dta、.xlsx、.csv、.dat等。

其中SPSS與Stata等套裝軟體提供的資料檔格式(即.sav、.dta)逐漸變得更加熱門,因為可以直接設定variable labels、value labels、欄位類型等,使用者匯入資料檔即可取得所有資訊,不需要另外使用資料設定工作檔或codebook。雖然檔案容量較大與處理費時是其缺點,但當代電腦硬碟容量動輒數百GB甚至數TB,效能也愈發強悍,對一般使用者而言缺點就變得微不足道了。

然而,現在仍可以看到一些資料是以.dat等純文字檔格式提供,主要是以下兩種:

  1. 行之有年的調查資料庫:早期以純文字檔釋出資料,後期雖然科技進步,但為保持一致性或工作流程已經固定,就會繼續以文字檔釋出。
  2. 極為大量的資料:數千甚至上萬筆的資料,容量都不會造成現代電腦的負擔,但部分特殊資料庫的資料量以百萬筆計,單一資料檔即可能達數十GB,使用套裝軟體的檔案格式會需要很多時間讀取。

今天在Stack Overflow看到的提問是使用者想匯入美國勞工統計局執行的Current Population Survey資料,提問原帖在此

若用記事本開啟.dat檔,內容大致是這樣:

raw-image

用notepad++開啟CPS的.dat資料檔


視覺上來說,會自然以為這是以空格(space)分隔的資料檔,所以提問者一開始是使用read.delim這個函數匯入資料,read.delim是用來讀取分隔符號格式(Delimited Format)的資料檔,只要正確指定分隔符號,就能將用分隔符號隔開的資料讀取成不同欄位,例如.csv(逗號分隔)。

以這個資料檔來說這樣的處理並不正確。查看CPS的相關說明即可得知資料是固定欄寬格式,取前幾個變項為例:

hrhhid     1-15 (a)
hrmonth 16-17
hryear4 18-21
hurespli 22-23
hufinal 24-26

這表示第1~15個字元是第一個變項(hrhhid),第16~17字元是第二個變項(hrmonth),注意這邊的字元包含空格。因此正確的前5個變項是以下圖中的灰線劃分。


raw-image

正確劃分前5個欄位的.dat檔


明白問題出在哪後,接下來只要正確指派每個欄位佔據的字元就可以了。然而,查看技術說明文件並手動輸入是相當費時的工作。幸好CPS有提供套裝軟體的資料設定工作檔。雖然是提供給SAS、SPSS、STATA使用者讀取資料時直接使用的,但R中有套件可以直接讀取這些工作檔,並在R中進行相同的處理。

library(asciiSetupReader)

cps2004may <- read_ascii_setup(
data = dat_path,
setup_file = sps_path
)

其中dat_path是.dat檔存放路徑,setup_file則是.sps檔(資料設定工作檔)存放路徑。如此便能正確讀取有提供資料設定工作檔的fwf .dat了。


如果沒有提供資料設定工作檔怎麼辦?那就只能參考技術說明文件逐一指派每個欄位的寬度了。不過在原帖中也有人分享如何透過程式處理技術說明文件,一次性整理好每個欄位的寬度,若大家有興趣將來再做個分析講解吧!

留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
本法省去開啟EXCEL檔,轉存為CSV檔之手動作業,縮短作業時間,提高工作效率,尤其是對象為複數個檔案場合
Thumbnail
有時候在其他檔案轉換成SPSS檔時,可能出現在一個變項內,以特定符號將不同數字分開的(如下圖,第三行4,7,8),這時無法用SPSS進行有效分析。本文將說明如何使用SPSS將特定符號分開的數字轉換成不同變項,光看文字可能太過抽象,請看圖文教學。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
Thumbnail
本篇文章分享從製作數據分析報告到PPT簡報技巧,內容包括數據分析報告的構成要素、主體的清晰邏輯設定,以及製作精準PPT簡報的方法。提供從製作報告的過程到提升製作效率的建議,適合初入職場的數據分析新人們參考喔~
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
本法省去開啟EXCEL檔,轉存為CSV檔之手動作業,縮短作業時間,提高工作效率,尤其是對象為複數個檔案場合
Thumbnail
有時候在其他檔案轉換成SPSS檔時,可能出現在一個變項內,以特定符號將不同數字分開的(如下圖,第三行4,7,8),這時無法用SPSS進行有效分析。本文將說明如何使用SPSS將特定符號分開的數字轉換成不同變項,光看文字可能太過抽象,請看圖文教學。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
Thumbnail
本篇文章分享從製作數據分析報告到PPT簡報技巧,內容包括數據分析報告的構成要素、主體的清晰邏輯設定,以及製作精準PPT簡報的方法。提供從製作報告的過程到提升製作效率的建議,適合初入職場的數據分析新人們參考喔~