2017-02-28 25 views
0

HTML表格主體比表格標題中定義的多1列。這導致跳過最後一列,當然還有列不匹配。如何在R表中使用package("htmltab")讀取R中的附加列到結果data.frame/table中顯然,後處理無助於此。如何讀取不匹配列和標題的HTML表格?

Here is an example:

代碼

install.packages("htmltab") 
library(htmltab) 
bu<- 0 
bu <- data.table("Pl.", "Mannschaft", "Kurzname" , "Spiele", "G.", "U.", "V.", "Tore", "Diff.", "Pkt.") 
#https://www.bundesliga-prognose.de/1/2009/1/ 
url <- "https://www.bundesliga-prognose.de/1/2009/1/" 
bu <- htmltab(doc = url, column=10,columnnames=c ("Pl." , "Mannschaft", "Kurzname" , "Spiele", "G.", "U.", "V.", "Tore", "Diff.", "Pkt."), which = "//th[text() = 'Pl.']/ancestor::table") 
bu <- data.table(bu) 
head(bu) 

這導致

Pl.   Mannschaft  Spiele G. U. V. Tore Diff. Pkt. 
1: 1.   VfL Wolfsburg  Wolfsburg 1 1 0 0 2:0 2 
2: 2. Eintracht Frankfurt E. Frankfurt 1 1 0 0 3:2 1 
3: 3.   FC Schalke 04 FC Schalke 04 1 1 0 0 2:1 1 
4: 4.  Borussia Dortmund B. Dortmund 1 1 0 0 1:0 1 
5: NA  Hertha BSC Berlin H. BSC Berlin 1 1 0 0 1:0 1 
6: 6. Bor. Mönchengladbach M´gladbach 1 0 1 0 3:3 0 

作爲短名稱( 「Kurzname」)沒有在頭中指定的簡稱(「Kurzname「)與遊戲(Spiele)欄等顯示。所以最後一列被跳過。如何在使用htmltab包讀取標題時添加附加列短名稱(「Kurzname」)? 此外,我想使用htmltab軟件包將行5中的NA替換爲行ID /數字?

回答

0

提供幫助的我發現了一個很簡單的解決方案:

  1. 指定忽略標題
  2. 列表/定義所有colums通colNames

    網址< - 「https://www.bundesliga-prognose.de/1/2007/5/」 sp_2007_5 < - htmltab(doc = url,which =「// table [1]/tbody」,header = 0,colNames = c(「Datum」,「Anpfiff」,「Heim」,「Heim_Kurzname」, 「加斯特」, 「Gast_Kurzname」, 「Ergebnis」, 「Prognose」),rm_nodata_cols = F,編碼= 「UTF-8」) 頭(sp_2007_5)

0

這似乎確實是htmltab的問題。我發現的唯一解決方案是直接讀取表格的tbody。然後您需要手動添加標題。

htmltab(doc = url, which = "//table[2]/tbody") 
+0

感謝!很有幫助。這似乎證實了我的擔憂 – schelm56