HTML 表体的列比表头中定义的多 1 列。这会导致跳过最后一列,当然还有列不匹配。如何在使用 HTML 表中读取 HTML 表时将附加列添加到 R 中的结果 data.frame/tablepackage("htmltab")
显然,后处理无济于事。
下面是一个示例:
法典
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/编号?
这似乎确实是htmltab的一个问题。我找到的唯一解决方案是直接读取表的tbody
。然后,您需要手动添加标头。
htmltab(doc = url, which = "//table[2]/tbody")
在这种帮助下,我找到了一个非常简单的解决方案:
- 指定跳过标头
-
通过列名列出/定义所有列
网址 <- "https://www.bundesliga-prognose.de/1/2007/5/" sp_2007_5<- htmltab(doc = url, 其中 = "//table[1]/tbody", header = 0 , colNames = c("Datum" , "Anpfiff", "Heim" , "Heim_Kurzname","Gast", "Gast_Kurzname","Ergebnis", "Prognose"), rm_nodata_cols = F,编码 = "UTF-8") 头(sp_2007_5)