【问题标题】:Mutating a new column on a datafame inside a List / dplyr / mutate / list / Rstudio在 List / dplyr / mutate / list / Rstudio 内的数据帧上改变新列
【发布时间】:2020-05-04 00:39:27
【问题描述】:

对不起,如果这个问题已经解决了,我已经搜索没有成功解决这个疑问。

我抓取了 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 内部或在列表中获取数据集之后进行变异。

提前致谢。

【问题讨论】:

    标签: r list dplyr


    【解决方案1】:

    您可以通过多种方式处理此问题。一种方法是在函数中传递一个额外的year 参数并使用Map 而不是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 from purrr

    season_data <- purrr::map2_df(url, season_scrape, scrape_function)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-13
      • 2017-06-21
      • 2019-08-26
      • 1970-01-01
      • 2019-11-29
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多