匯入固定寬度的檔案

固定寬度檔案是文字檔案,其中列不由任何字元分隔符分隔,如 ,;,而是具有固定的字元長度( 寬度 )。資料通常用空格填充。

一個例子:

Column1 Column2   Column3           Column4Column5 
1647    pi        'important'       3.141596.28318
1731    euler     'quite important' 2.718285.43656
1979    answer    'The Answer.'     42     42

假設該資料表存在於工作目錄中的本地檔案 constants.txt 中。

使用基礎 R 匯入

df <- read.fwf('constants.txt', widths = c(8,10,18,7,8), header = FALSE, skip = 1)

df
#>     V1     V2                 V3         V4        V5
#> 1 1647     pi         'important'   3.14159   6.28318
#> 2 1731  euler   'quite important'   2.71828   5.43656
#> 3 1979 answer       'The Answer.'   42        42.0000

注意:

  • 列標題不需要用字元分隔(Column4Column5
  • widths 引數定義每列的寬度
  • read.fwf() 無法讀取未分隔的標題

使用 readr 匯入

library(readr)

df <- read_fwf('constants.txt', 
               fwf_cols(Year = 8, Name = 10, Importance = 18, Value = 7, Doubled = 8), 
               skip = 1)
df
#> # A tibble: 3 x 5
#>    Year    Name        Importance    Value  Doubled
#>    <int>   <chr>           <chr>     <dbl>    <dbl>
#> 1  1647      pi       'important'  3.14159  6.28318
#> 2  1731   euler 'quite important'  2.71828  5.43656
#> 3  1979  answer     'The Answer.' 42.00000 42.00000

注意:

  • readr 的 fwf_*輔助函式提供了指定列長度的替代方法,包括自動猜測(fwf_empty
  • readr 比 base R 快
  • 無法從資料檔案中自動匯入列標題