用Rstudio(或你喜歡的編輯器)看資料

從圖中可以發現,每一個column都是固定的寬度。這種資料叫做Fixed Width Format Files, 可以用base R中的read.fwf或者readr中的read_fwf讀取資料。這兩者使用方法相似,但read.fwf沒有提供處理NA資料的功能,所以這個資料我會用後者進行讀取。

怎麽使用readr::read_fwf

因爲column的寬度是不變的,我們只需要告訴read_fwf每一個column具體寬度是多少即可讀取(參數col_positions)

量寬度

寬度指的是有多少個字符。如圖,我用的方法是複製其中一行到Rstudio中(或者你喜歡的編輯器),左下角紅色的圈中會告訴你cursor的位置,圖中31指的是cursor的位置左邊有31個字符。靠Rstudio幫忙很快就能數出17個column的寬度,可以直接複製我的code嘗試一下。

# dta <- read.fwf("aaup2.dat.txt", widths = c(6, 31, 3, 5,
#                                             rep(4, 3), 5,
#                                             rep(4, 2), 5, rep(4, 5), 5))

library(readr)
dta <- read_fwf("aaup2.dat.txt", na = "*", 
                col_positions = fwf_widths(c(6, 31, 3, 5, 
                                                 rep(4, 3), 5, 
                                                 rep(4, 2), 5, rep(4, 5),
                                             4)))
head(dta)
## # A tibble: 6 x 17
##      X1 X2     X3    X4    X5       X6    X7 X8    X9      X10 X11   X12     X13
##   <dbl> <chr>  <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <dbl> <chr> <chr> <dbl>
## 1  1061 Alask~ AK    IIB   454     382   362 382   567     485 471   487       6
## 2  1063 Univ.~ AK    I     686     560   432 508   914     753 572   677      74
## 3  1065 Univ.~ AK    IIA   533     494   329 415   716     663 442   559       9
## 4 11462 Univ.~ AK    IIA   612     507   414 498   825     681 557   670     115
## 5  1002 Alaba~ AL    IIA   442     369   310 350   530     444 376   423      59
## 6  1004 Unive~ AL    IIA   441     385   310 388   542     473 383   477      57
## # ... with 4 more variables: X14 <dbl>, X15 <dbl>, X16 <dbl>, X17 <dbl>

嚴格來説應該標注每一欄的data type,比如學校是factor, 但data type不是這個問題的重點,我就沒有特別標注。