2017-09-11 25 views
5

Tôi đang cố gắng đọc thông tin về trạm khí hậu từ ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/ghcnd-stations.txt. Tuy nhiên, kể từ khi dòng đầu tiên không được phổ biến đầy đủ (hai cols cuối cùng bị thiếu) và cột 5th chứa dấu cách, tôi không thể để hoàn thành đọc với:Làm thế nào để giải quyết vấn đề của fread txt với EOF?

fread('ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/ghcnd-stations.txt',sep=) 

Nó trả về thông báo lỗi:

Expected sep (' ') but new line, EOF (or other non printing character) ends 
field 5 when detecting types from point 0: AGE00135039 35.7297 0.6500 
50.0 ORAN-HOPITAL MILITAIRE  

Làm cách nào để áp dụng chính xác khi đọc tệp txt này? Cảm ơn bạn!

+0

Ok, nếu tôi đọc định dạng này đúng, chiều rộng cố định của loại này là trên danh sách cần làm: https://github.com/Rdatatable/data.table/issues/1345 – Frank

+1

Bạn có thể thử đọc nó một cột duy nhất và sau đó chia nhỏ nó thành tất cả 8 biến trở lên, nhưng nó sẽ là một chút đau đớn – ira

+0

Cảm ơn bạn @Frank, giúp và tôi sẽ xem xét. – DrX

Trả lời

0

Tại sao bạn không chỉ thử chức năng read.fwf từ gói utils? Chiều rộng cột được đưa ra trong tệp readme.txt (xem phần IV).

IV. FORMAT OF "ghcnd-stations.txt" 

------------------------------ 
Variable Columns Type 
------------------------------ 
ID   1-11 Character 
LATITUDE  13-20 Real 
LONGITUDE 22-30 Real 
ELEVATION 32-37 Real 
STATE  39-40 Character 
NAME   42-71 Character 
GSN FLAG  73-75 Character 
HCN/CRN FLAG 77-79 Character 
WMO ID  81-85 Character 
------------------------------ 

Tuy nhiên, nỗ lực sau trả về một lỗi:

data <- read.fwf("ghcnd-stations.txt", widths = c(11,9,10,7,3,31,4,4,6)) 
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, : 
    line 25383 did not have 7 elements 

Kiểm tra dòng 25.383 tiết lộ nguyên nhân của lỗi.

> x <- readLines("ghcnd-stations.txt", 25383) 
> tail(x, 1) 
[1] "CA002100627 60.8167 -137.7333 846.0 YT HAINES APPS #4        " 

Vì vậy, phá vỡ này bằng cách đưa lập luận comment.char, thay đổi giá trị từ mặc định (#) để cái gì khác, có lẽ chỉ là null.

data <- read.fwf("ghcnd-stations.txt", widths = c(11,9,10,7,3,31,4,4,6), comment.char="") 

Chỉ mất khoảng 20 giây. Không có nhu cầu thực sự cho fread.

Các vấn đề liên quan