开展个人挑战,学习如何从互联网上抓取信息。我有三种不同的来源,特别是网球数据。其中一个数据集不会拆分或合并。似乎单元格/观察结果被描述为字符串,但在匹配,拆分,合并等时不会起作用。有关如何将此数据分割的任何提示(即播放器>播放器名字和播放器最后名称)。如果我能够获得这种洞察力,那么合并应该相对容易。
elo = htmlParse("http://tennisabstract.com/reports/atp_elo_ratings.html")
class(elo)
elo.table = readHTMLTable(elo, header=T, which=5,stringsAsFactors=F)
答案 0 :(得分:0)
而不是使用我喜欢直接指定表格,所以如果网站在我感兴趣的表格上面添加一个表格,它将不会破坏我的代码。我刚进去并手动设置了列的类。
library(RCurl)
library(XML)
library(dplyr)
elo = htmlParse("http://tennisabstract.com/reports/atp_elo_ratings.html")
elo.table = readHTMLTable(elo, header=TRUE, stringsAsFactors=FALSE)
# Drop out the duplicate header
Table <- elo.table$reportable[-1,]
Table %>%
transmute(
Rank = as.numeric(Rank)
,Player
,PlayerFirst = gsub('(.*)\\s(.*)', '\\1', Player)
,PlayerLast = gsub('(.*)\\s(.*)', '\\2', Player)
,Age = as.numeric(Age)
,Elo = as.numeric(Elo)
,PeakMatch = `Peak Match`
,PeakYear = as.numeric(gsub('([0-9]{,4})\\s(.*)', '\\1',PeakMatch))
,PeakResult = gsub('([0-9]{,4})\\s(.*)\\s([QFRS132648]{1,4})', '\\3',PeakMatch)
,PeakMatch = gsub('([0-9]{,4})\\s(.*)\\s([QFRS132648]{1,4})', '\\2',PeakMatch)
,PeakAge = as.numeric(`Peak Age`)
,PeakElo = as.numeric(`Peak Elo`)
)