【发布时间】:2016-02-15 07:44:53
【问题描述】:
我对 R 和网络抓取世界有点陌生。我真的不明白为什么df[df == "x"] 在这种情况下不起作用:
library(rvest)
library(dplyr)
library(tidyr)
# Step 1: Read URL
htmlpage <- read_html("http://www.bmbets.com/football/england/premier-league/")
# Step 2: Extract info from web
Data <- htmlpage %>%
html_nodes("table") %>%
html_table()
#Step 3: Subset correct table
Data <- Data[[3]]
# Step 4: Change column names
colnames(Data) <- c("Date", "Venue", "V1", "V2", "V3", "Payout", "B")
# Step 5: Select columns
Data <- select(Data, 1:5)
# Step 6: Separate 'Venue' column with tidyr package
Data <- Data %>%
separate(Venue, into = c("Home", "Away"), sep = "\\-", extra = "merge")
# Step 7: Change team name
Data[Data == "Leicester City"] <- "Leicester"
tbl_df(Data)
结果如下:
Date Home Away V1 V2 V3
(chr) (chr) (chr) (dbl) (chr) (dbl)
1 12:45 West Ham United Sunderland 1.81 3.61 4.41
2 15:00 Leicester City Norwich City 1.49 4.27 6.60
3 15:00 Southampton Chelsea 2.59 3.21 2.77
“莱斯特城”队不变!为什么?
'Data' 对象是一个 data.frame,Home 和 Away 字段是 'chr'...我认为问题与 tidyr 包有关,但即使我只是尝试在步骤 3 中更改团队名称不工作!
有什么想法吗?
【问题讨论】:
-
因为它是
"Leicester City ",而不是"Leicester City"。您可以通过Data[2,2]轻松查看。 -
在替换之前,我建议修剪字符串。在
separate部分之后,Data[,2:3]<-lapply(Data[,2:3],trimws)将删除所有前导/尾随空格。
标签: r web-scraping