2017-09-11 11 views
5

私はftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/ghcnd-stations.txtから気候ステーションの情報を読もうとしています。 しかし、最初の行がフル装備ではないので(最後の二つのcolsが不足している)と5列にスペースが含まれている、私は読んで完了することができません:EOFでfread txtの問題を解決するには?

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  

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

それはエラーメッセージを返します

このtxtファイルを読むときにfreadを正しく適用する方法は?ありがとうございました!

+0

これを正しく読んでいるなら、この並べ替えの固定幅フォーマットはToDoリストにあります:https://github.com/Rdatatable/data.table/issues/1345 – Frank

+1

あなたはそれを読むことができます1つの列のみとし、すべての8つまたはそれ以上の変数に分解するが、それは少し痛いだろう – ira

+0

ありがとう@フランク、それは助けて、私は見てみましょう。 – DrX

答えて

0

read.fwf機能をutilsパッケージから試してみませんか?列の幅はreadme.txtファイルで与えられます(セクション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 
------------------------------ 

ただし、次の試みはエラーを返します:ライン25383の

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 

検査は、エラーの原因を明らかにしています。

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

だから、たぶんヌル、何か他のものにデフォルト(#)からの値を変更し、comment.char引数を含めることで、これを回避します。

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

約20秒かかります。 freadの本当の必要はありません。

関連する問題