我使用 for 回圈從籃球網站上抓取了多個表格。
years <- c(2016:2021)
final_table <- {}
for(i in 1:length(years)){
url <- paste0("https://www.basketball-reference.com/friv/free_agents.cgi?year=",years[i])
past_free_agency_page <- read_html(url)
past_free_agency_webtable<- html_nodes(past_free_agency_page, "table")
past_free_agency_table <- html_table(past_free_agency_webtable, header = T)[[1]]
final_table <- rbind(final_table, past_free_agency_table)
}
這會正確檢索所有內容,但我正在嘗試在創建所有這些表時組合它們。如果您注意到它總共有 5 張桌子(2016 年 - 2021 年)。
我遇到了一個錯誤:我嘗試rbind()在回圈結束時將表格與。這沒用。它說“名稱不匹配”。我不知道解決此問題的聰明方法,因為我是使用回圈的新手,并且我嘗試將刮掉的表變成 df 卻沒有成功。
我的下一個問題與表格的組合方式有關。在網站鏈接中,可以看到表格中有標題,它們完全重復了主標題。該代碼將其視為另一行,因此它在每個表中顯示為一個實體。我希望這些被忽略。
最后一個問題與使這些行中的每一行都是唯一的有關,我希望每個表的相應年份成為自己的一列。例如,對于 2016 年,我希望表中有一個顯示 2016 的列。我在回圈內嘗試了一些東西,例如past_free_agency_table[,1] <- c(years[i]),我想這樣做,因為其中一些表有相同的玩家,我想能夠唯一標識,哪個表是哪個。
uj5u.com熱心網友回復:
有點像一個回圈,但在purrr某種程度上。
library(tidyverse)
library(rvest)
get_df <- function(year) {
"https://www.basketball-reference.com/friv/free_agents.cgi?year=" %>%
paste0(., year) %>%
read_html() %>%
html_table() %>%
.[[1]] %>%
mutate(years = year) %>%
select(Rk, years, everything())
}
df <- map_dfr(2016:2020, get_df)
# A tibble: 1,161 × 16
Rk years Player Pos Age Type OTm `2015-16 Stats` WS NTm
<chr> <int> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 2016 Kevin Du… F-G 33-2… UFA OKC 28.2 Pts, 8.2 … 14.5 GSW
2 2 2016 LeBron J… F-G 37-1… UFA CLE 25.3 Pts, 7.4 … 13.6 CLE
3 3 2016 Hassan W… C 33-0… UFA MIA 14.2 Pts, 11.8… 10.3 MIA
4 4 2016 DeMar De… G-F 32-3… UFA TOR 23.5 Pts, 4.5 … 9.9 TOR
5 5 2016 Al Horfo… C-F 36-0… UFA ATL 15.2 Pts, 7.3 … 9.4 BOS
6 6 2016 Marvin W… F 36-0… UFA CHO 11.7 Pts, 6.4 … 7.8 CHA
7 7 2016 Andre Dr… C 28-3… RFA DET 16.2 Pts, 14.8… 7.4 DET
8 8 2016 Pau Gasol C-F 41-3… UFA CHI 16.5 Pts, 11.0… 7.1 SAS
9 9 2016 Dirk Now… F 44-0… UFA DAL 18.3 Pts, 6.5 … 6.8 DAL
10 10 2016 Dwight H… C 36-1… UFA HOU 13.7 Pts, 11.8… 6.6 ATL
# … with 1,151 more rows, and 6 more variables: Terms <chr>, Notes <chr>,
# `2016-17 Stats` <chr>, `2017-18 Stats` <chr>, `2018-19 Stats` <chr>,
# `2019-20 Stats` <chr>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495156.html
上一篇:Trie使用了太多記憶體
