导入固定宽度的文件
固定宽度文件是文本文件,其中列不由任何字符分隔符分隔,如 ,
或 ;
,而是具有固定的字符长度( 宽度 )。数据通常用空格填充。
一个例子:
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 快
- 无法从数据文件中自动导入列标题