28499


R言語のrvestパッケージを利用して気象庁のページ[http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=44&block_no=47662&year=2016&month=7&day=&view=](http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=44&block_no=47662&year=2016&month=7&day=&view=)  
からデータをデータフレームに収納したいと考えております。  
ですが、カラムの構造が複雑になっているからかうまく行きません。  
自分のソースコードは以下のとおりです。  
詳しい方教えて下さい。もし全部のデータを取るのが難しければ平均気温だけで構いません。よろしくお願い致します。

[code]

    library(rvest)
    html <- read_html("http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=44&block_no=47662&year=2016&month=7&day=&view=")
    table <- html_table(html)
    
[/code]

このコードを実行すると最後の行に以下のエラーが出ます。

> table <\- html_table(html)  
>  Error: Table has inconsistent number of columns. Do you want fill = TRUE?


CC BY-SA 3.0
2016-08-14T09:51:05.013
28261
2016-08-25T21:50:17.160
12457
question
r web-scraping
rvestを用いたスクレイピング


おそらくそのページにある最大なテーブルがほしいです。

問題は、そのテーブルのヘッダーがややこしいです。例えば、3行にある`最大`が二つのカラムを挟んでいます。

でもそれに当たる下のHTMLにただ一つのセルがコードしてあります。

したがって`html_table`に`fill =
TRUE`を与えなければなりません。すると、でてくる`data.frame`に、満々じゃない行に適当に`NA`をいれてあげます。

[code]

    URL <-
      paste0("http://www.data.jma.go.jp/obd/stats/etrn/view/",
             "daily_s1.php?prec_no=44&block_no=47662&year=2016",
             "&month=7&day=&view=")
    DF <- read_html(URL) %>% 
      html_node(xpath='//*[@id="tablefix1"]') %>% 
      html_table(fill = TRUE)
    head(DF)
    #      日 気圧(hPa)     NA 降水量(mm)   NA   NA 気温(℃)   NA   NA 湿度(％)
    # 1  現地      海面   <NA>       <NA> <NA> <NA>    <NA> <NA> <NA>     <NA>
    # 2  平均      平均   合計       最大 <NA> 平均    最高 最低 平均     最小
    # 3 1時間    10分間   風速       風向 風速 風向    合計   値 <NA>     <NA>
    # 4     1    1010.2 1013.0         --   --   --    25.6 30.6 22.0       83
    # 5     2    1007.6 1010.4        0.0  0.0  0.0    27.0 31.8 23.4       79
    # 6     3    1003.8 1006.6         --   --   --    29.2 35.4 24.6       71
    #         NA 風向・風速(m/s)  NA           NA   NA     NA 日照時間(h)
    # 1     <NA>            <NA>  NA         <NA>   NA   <NA>        <NA>
    # 2 平均風速        最大風速  NA 最大瞬間風速   NA   降雪    最深積雪
    # 3     <NA>            <NA>  NA         <NA>   NA   <NA>        <NA>
    # 4       59             2.3 7.0       南南東 10.9 南南東         4.4
    # 5       61             3.0 5.9           南  9.8 南南西         6.9
    # 6       50             3.3 7.2       南南西 13.2   南西         7.6
    #            雪(cm)                  NA   天気概況         NA
    # 1            <NA>                <NA>       <NA>       <NA>
    # 2 昼(06:00-18:00) 夜(18:00-翌日06:00)       <NA>       <NA>
    # 3            <NA>                <NA>       <NA>       <NA>
    # 4              --                  --   曇一時晴         曇
    # 5              --                  -- 曇後時々晴 薄曇時々晴
    # 6              --                  --   曇一時晴 晴後一時曇
    
[/code]

ちゃんと見えるように、第1ー３行（とカラムのネーム）が出鱈目になってます。

その行を除いて、自分が与えたいネームをつけようとすすめます：

[code]

    DF <- DF[-1L:-3L, ]
    names(DF) <- my_names
    
[/code]


CC BY-SA 3.0
2016-08-25T21:50:17.160
28499
2016-08-25T21:50:17.160
18598
28261
answer