gpt4 book ai didi

r - 将值迭代地附加到循环创建的数据帧中的所有记录

转载 作者:行者123 更新时间:2023-12-04 02:29:25 25 4
gpt4 key购买 nike

试图从basketball-reference.com(正在运行)中抓取球员职业生涯中的个人比赛统计数据,但我想将球员姓名添加到与个人比赛结果相对应的结果df中。例如,第一个循环只会为刮取生成的 86 行重复“Kareem Abdul-Jabbar”86 次。我正在尝试使用 cbind 填充方法将下一个循环添加到名为“Player_Name”的现有列中,但 cbind 改为为每个循环创建一个新列。任何关于如何将球员姓名放入单列的建议将不胜感激。

library(rvest)
library(dplyr)

# Create df of players to be scraped
#########################################################################
players = data.frame(player_name = c(rep("Kareem Abdul-Jabbar",each=20),
rep("Karl Malone",each=19)),
player_id = c(rep("abdulka01",each=20),
rep("malonka01",each=19)),
initial = c(rep("a",each=20),
rep("m",each=19)),
year = c(seq(1970,1989,by=1),
seq(1986,2004,by=1)))

# Scrape data and stack in a df
#########################################################################
output <- data_frame()
for (i in 1:2){

url <- paste0("https://www.basketball-reference.com/players/",
players[i,3],"/",players[i,2],"/gamelog/",players[i,4])

webpage <- read_html(url)

temp <- webpage %>%
html_nodes("#pgl_basic") %>%
html_table()

player_name=players[i,1]

output <- cbind(bind_rows(output, temp),player_name)
}

最佳答案

您可以创建 URL 来抓取和使用 map_df将它们组合成一个数据帧。

library(rvest)
library(tidyverse)

urls <- sprintf("https://www.basketball-reference.com/players/%s/%s/gamelog/%s",
players$initial, players$player_id, players$year)

result <- map_df(urls, ~.x %>%
read_html() %>%
html_nodes("#pgl_basic") %>%
html_table(), .id = 'playername') %>%
mutate(playername = players$player_name[as.numeric(playername)])

关于r - 将值迭代地附加到循环创建的数据帧中的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65273282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com