簡體   English   中英

在 List / dplyr / mutate / list / Rstudio 內的 datafame 上改變新列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM