2017-09-11 24 views
5

ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/ghcnd-stations.txt adresinden iklim istasyonu bilgilerini okuma çalışıyorum.EOF ile yayılan txt sorunu nasıl çözülür?

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=) 

Bu hata mesajı döndürür: Ancak, ilk satır tam olarak doldurulur olmadığından (son iki cols eksik) ve 5. sütun ben okuma tamamlayamaz değilim, boşluk içeriyorsa

Bu txt dosyasını okumakta doğru olarak nasıl doğru uygulanır? Teşekkür ederim!

+0

Tamam, doğru okuyorsam, bu tür sabit genişlikli biçim yapılacaklar listesi: https://github.com/Rdatatable/data.table/issues/1345 – Frank

+1

Bunu okumaya deneyebilirsiniz. sadece bir sütun ve daha sonra tüm 8 veya daha fazla değişkenler aşağı kırın, ama biraz acı verici olacak – ira

+0

Teşekkür ederim @Frank, bu yardımcı olur ve bir göz atacağım. – DrX

cevap

0

Neden util paketinden read.fwf işlevini denemiyorsunuz? Sütun genişlikleri, readme.txt dosyasında verilmiştir (bkz. Bölüm 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 
------------------------------ 

Bununla birlikte, aşağıdaki denemesi hata verir: hattı 25.383 arasında

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 

Denetim hatanın nedenini ortaya koymaktadır.

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

Yani, muhtemelen sadece null, başka bir şeye varsayılan (#) den değerini değiştirerek, comment.char argüman dahil ederek bu sorunu çözecek.

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

Sadece 20 saniye sürer. fread için gerçek bir ihtiyaç yok.