Как добавить столбец для представления переменной года при извлечении данных? - PullRequest
1 голос
/ 07 мая 2020

Как удалить данные и добавить дополнительный столбец, чтобы показать year, что он очищен?

nba_drafts <- function(year) {
    url <- glue("https://www.basketball-reference.com/draft/NBA_{year}.html")

    tables<-read_html(url) %>% 
      html_nodes("#stats") %>% 
      html_table() %>%
      as.tibble() %>%
      add_column(year = year)

    write.csv(tables, year, file = "nba_draftsR.csv", na ="")
  }

2000:2017 %>%
  walk(function(year) {
    nba_drafts(year) 
  })  

Ошибка: столбец 1 должен быть назван.

1 Ответ

2 голосов
/ 07 мая 2020

Проверил ваш код, ошибка происходит на шаге, выделенном в коде ниже.

tables<-read_html(url) %>% 
      html_nodes("#stats") %>% 
      html_table() %>%
      as.tibble() %>% # error is happening at this step

Debug Step: Причина этой ошибки в том, что имена первых трех столбцов - это balnks (""), которые вам нужно назначить в первую очередь, только затем вы можете изменить на tibble или фрейм данных.

tables<-read_html(url) %>% 
    html_nodes("#stats") %>% 
    html_table() %>% 
    purrr::simplify() %>%
    first() 
names(tables)
 [1] ""         ""         ""         "Round 1"  "Round 1"  ""         "Totals"   "Totals"   "Totals"   "Totals"   "Totals"  
[12] "Shooting" "Shooting" "Shooting" "Per Game" "Per Game" "Per Game" "Per Game" "Advanced" "Advanced" "Advanced" "Advanced"

Я добавил для l oop, чтобы обновить имена

nba_drafts <- function(year) { 
  url <- glue("https://www.basketball-reference.com/draft/NBA_{year}.html")
  tables<-read_html(url) %>% 
    html_nodes("#stats") %>% 
    html_table() %>% 
    purrr::simplify() %>%
    first() 

  oldName<-names(tables)
  #updating names with col_
  for(i in 1:length(oldName)){

    oldName[i]<- paste0("col_",i,oldName[i])
  }

  names(tables)<-oldName
  tables<-tables %>% 
    as.tibble() %>%
    add_column(year = year)
  return(tables)
}

Вывод:

> nba_drafts("2019")
# A tibble: 63 x 23
   col_1 col_2 col_3 `col_4Round 1` `col_5Round 1` col_6 col_7Totals col_8Totals col_9Totals col_10Totals col_11Totals
   <chr> <chr> <chr> <chr>          <chr>          <chr> <chr>       <chr>       <chr>       <chr>        <chr>       
 1 Rk    Pk    Tm    Player         College        Yrs   G           MP          PTS         TRB          AST         
 2 1     1     NOP   Zion Williams… Duke           1     19          565         448         129          41          
 3 2     2     MEM   Ja Morant      Murray State   1     59          1771        1041        208          409         
 4 3     3     NYK   RJ Barrett     Duke           1     56          1704        803         279          143         
 5 4     4     LAL   De'Andre Hunt… Virginia       1     63          2018        778         286          112         
 6 5     5     CLE   Darius Garland Vanderbilt     1     59          1824        728         111          229 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...