2017-01-24 2 views
1

オンラインでホストされているNOAAファイルからテーブルを読み込みたいです。このファイルは、さまざまな都市の駅のリストです。私のトラブルは、データを読み込む方法があります。カラムは一貫して分離されていないようです。つまり、fillオプションをtrueにして、複数の単語都市が別の列に終わることになります。これは明らかに私が望むものではありませんが、それを訂正できる解決策は見当たりません。多分最後のいくつかの列をすべて1つの列として一緒に読み込むように指定する方法はありますか?あるいは、私はread.tableとおそらく他の何かを使うべきではないでしょうか?どんな助けもありがとう!可変列のread.table

コードは次のとおりです。

url <- "ftp://ftp.ncdc.noaa.gov/pub/data/normals/1981-2010/station-inventories/temp-inventory.txt" 

stations <- read.table(url, header=FALSE, skip=2, fill=TRUE, nrows = 5, 
      col.names = c("ID","lat","lon","UNK","State","City","UNK2","UNK3","UNK4") 
      ) 
stations 

      ID  lat  lon UNK State  City  UNK2  UNK3   UNK4 
1 CQC00914080 15.2136 145.7497 252.1 MP CAPITOL  HILL   1 TRADITIONAL 
2 CQC00914801 14.1717 145.2428 179.2 MP  ROTA   AP  91221 TRADITIONAL 
3 FMC00914395 5.3544 162.9533 2.1 FM KOSRAE  91355 TRADITIONAL 
4 FMC00914419 5.5167 153.8167 1.5 FM LUKUNOCH TRADITIONAL    
5 FMC00914446 9.6053 138.1786 14.9 FM  MAAP TRADITIONAL    

関連する行と、元のソースはこれです:

CQC00914080 15.2136 145.7497 252.1 MP CAPITOL HILL 1        TRADITIONAL 
CQC00914801 14.1717 145.2428 179.2 MP ROTA AP        91221 TRADITIONAL 
FMC00914395 5.3544 162.9533 2.1 FM KOSRAE         91355 TRADITIONAL 
FMC00914419 5.5167 153.8167 1.5 FM LUKUNOCH          TRADITIONAL 
FMC00914446 9.6053 138.1786 14.9 FM MAAP           TRADITIONAL 
+1

私に固定幅のファイルのように見えます - '?read.fwf'を参照してください – thelatemail

+0

これまで見たことはありませんでしたが、それは非常に便利です。ヒントをありがとう! –

答えて

1

それはパッケージreadrからread_tableで正常に動作します:

readr::read_table(url, skip=2, n_max = 5,col_names=FALSE) 

cols(
    X1 = col_character(), 
    X2 = col_double(), 
    X3 = col_double(), 
    X4 = col_double(), 
    X5 = col_character(), 
    X6 = col_character(), 
    X7 = col_character(), 
    X8 = col_character(), 
    X9 = col_integer(), 
    X10 = col_character() 
) 
# A tibble: 5 × 10 
      X1  X2  X3 X4 X5    X6 X7 X8 X9   X10 
     <chr> <dbl> <dbl> <dbl> <chr>   <chr> <chr> <chr> <int>  <chr> 
1 CQC00914080 15.2136 145.7497 252.1 MP CAPITOL HILL 1    NA TRADITIONAL 
2 CQC00914801 14.1717 145.2428 179.2 MP  ROTA AP    91221 TRADITIONAL 
3 FMC00914395 5.3544 162.9533 2.1 FM   KOSRAE    91355 TRADITIONAL 
4 FMC00914419 5.5167 153.8167 1.5 FM  LUKUNOCH    NA TRADITIONAL 
5 FMC00914446 9.6053 138.1786 14.9 FM   MAAP    NA TRADITIONAL 
+0

時々私は本当のばかみたいに感じます。ありがとう、友よ! –

2

いることができ、固定幅のファイルのように見えます?read.fwfを使用して適切に処理してください。

read.fwf(url, widths=c(11,9,10,7,4,31,3,10,13), strip.white=TRUE, comment.char="") 

R.でコメント文字として解釈されているテキストファイル内の#文字が存在するので、comment.char=""が必要である。これは、特定の行がエラーをスローします:ここでは、ファイルをインポートするために動作するようですフルラインです必要な列をすべて見つけることができないためです。

+0

ほんの少しの余分な作業が必要な場合でも、私はこの解決策を非常に気に入っています。再度、感謝します! –