[英]Mutating a new column on a datafame inside a List / dplyr / mutate / list / Rstudio
抱歉,如果這個問題已經解決,我已經搜索但沒有成功解決這個疑問。
我抓取了 NBA 的 10 個賽季並將數據集存儲在一個列表中,但主要問題是我在數據集中沒有包含賽季年份的列,因此很難確定數據集來自哪個賽季。
所以我期待做的是根據季節向量改變一個新列並識別季節的年份。
這是我嘗試過的:
library(tidyverse)
library(rvest)
library(xml2)
season_scrape <- c(2010:2019)
url <- paste0("https://www.basketball-reference.com/leagues/NBA_", season_scrape, "_totals.html")
scrape_function <- function(url){
season_stats <- url %>%
read_html() %>%
html_nodes("table") %>%
.[[1]] %>%
html_table() %>%
mutate(season_year = season_scrape)
}
season_data <- lapply(url, scrape_function)
你會推薦什么? 在 scrape_function 內部或在列表中獲取數據集之后進行變異。
提前致謝。
您可以通過多種方式處理此問題。 一種方法是在 function 中傳遞一個額外的year
參數,並使用Map
而不是 lapply 應用lapply
。
library(dplyr)
library(rvest)
scrape_function <- function(url, year){
url %>%
read_html() %>%
html_nodes("table") %>%
.[[1]] %>%
html_table() %>%
mutate(season_year = year)
}
season_data <- Map(scrape_function, url, season_scrape)
如果需要將數據一起綁定到一個 dataframe 中,也可以使用map2_df
中的purrr
。
season_data <- purrr::map2_df(url, season_scrape, scrape_function)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.