HTML表主体比表头中定义的列多1列。这导致跳过最后一列,当然还有列不匹配。如何在使用package("htmltab")
的HTML表格中读取R中的结果data.frame / table时添加其他列显然,后期处理没有帮助。
码
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 ”)({{ 1}})列等等。所以跳过最后一列。如何使用Spiele
包读取标题时添加其他列短名称(“ Kurzname ”)?
另外,我想使用htmltab
包替换第5行中的NA
和行ID /号码?
答案 0 :(得分:0)
这似乎确实是htmltab的一个问题。我找到的唯一解决方案是直接读取表的tbody
。然后,您需要手动添加标题。
htmltab(doc = url, which = "//table[2]/tbody")
答案 1 :(得分:0)
在这种帮助下,我找到了一个非常简单的解决方案:
通过colNames列出/定义所有colums
url&lt; - &#34; https://www.bundesliga-prognose.de/1/2007/5/&#34; sp_2007_5&lt; - htmltab(doc = url,其中=&#34; // table [1] / tbody&#34;,header = 0,colNames = c(&#34; Datum&#34;,&#34; Anpfiff&# 34;,&#34; Heim&#34;,&#34; Heim_Kurzname&#34;,&#34; Gast&#34;,&#34; Gast_Kurzname&#34;,&#34; Ergebnis&#34;,&# 34;预测&#34;),rm_nodata_cols = F,编码=&#34; UTF-8&#34;) head(sp_2007_5)