Rでスクレイピングしたデータをpackageにして公開してみた
以下の記事でウェブスクレイピングの練習をしました。
hadadada00.hatenablog.com
せっかくなので以下の記事で作成したpackageに追加して今後分析で簡単に使えるようにしてみました。
hadadada00.hatenablog.com
前回作成したpackageのローカル環境は以下のようになっています。
こちらにファイルを追加していきます。
まず、data-raw下にウェブスクレイピング用のRスクリプトファイルを作成します。
read_html.R
# TITLE : read_html.R # PURPOSE : get salary data from web # HISTORY : Ver1 2019-06-16 library(rvest) library(tidyverse) # url(domain) url_domain <- "https://hoopshype.com/salaries/players/" # get_html function # param season : NBA season get_html <- function(season) { url <- paste0(url_domain, season) # get html h <- read_html(url) # parse html tab <- h %>% html_nodes("table") # get salary table from tab table <- tab[[1]] %>% html_table() # create data frame table <- table %>% mutate(n = row_number(), season = season, name = X2, salary = X3, salary_adj = X4) %>% filter(n != 1) %>% select(season, name, salary, salary_adj) } # initialise data frame salaries <- data.frame() # repeat get_html function and add salary table into salaries salaries <- rbind(salaries, get_html("2017-2018"), get_html("2016-2017"), get_html("2015-2016"), get_html("2014-2015"), get_html("2013-2014"), get_html("2012-2013"), get_html("2011-2012"), get_html("2010-2011"), get_html("2009-2010"), get_html("2008-2009"), get_html("2007-2008"), get_html("2006-2007"), get_html("2005-2006"), get_html("2004-2005"), get_html("2003-2004"), get_html("2002-2003"), get_html("2001-2002"), get_html("2000-2001")) # save as .rda file save(salaries, file = "../data/salaries.rda")
これでdataディレクト下に新たにsalaries.rdaというデータファイルが追加されました。
次にRディレクト下にsalaries.Rという名前でデータの説明ファイルを作成します。
#' Datasets of NBA players' salaries #' #' A dataset of NBA players' salaries since 2000-2001 season to 2017-2018 season. #' #' @format A data frame with 8,691 rows and 4 variables: #' \describe{ #' \item{season}{season year} #' \item{name}{players' name} #' \item{salary}{salary, in US dollar} #' \item{salary_adj}{salary adjusted for inflation, in US dollar} #' } #' @docType data #' #' @usage data(salaries) #' #' @keywords datasets #' #' @source \url{https://hoopshype.com/salaries/players/2017-2018/} #' "salaries"
次にドキュメントファイル(.Rd)をアップデートします。
devtools::document()
R/man下にsalaries.Rdが追加されました。
次にパッケージのロードとチェックを行います。
チェックでエラーがでなければローカルでの編集作業は終了です。
devtools::load_all() devtools::check()
チェックで問題がなければgithubにアップロードします。
コマンドプロンプトを開いてpackageの環境に移動します。
cd /Users/[your name]/Desktop/Rwork/nbastats
あとはおなじみのコマンドです。
git add . git commit -m "[your comments]" git push -u origin master
最後に適当なRスクリプトファイルでパッケージのインストールからデータの読み込みまでを確認します。
devtools::install_github("hadadada00/nbastats") library(nbastats) head(salaries) > head(salaries) season name salary salary_adj 1 2017-2018 Stephen Curry $34,682,550 $35,678,476 2 2017-2018 LeBron James $33,285,709 $34,241,524 3 2017-2018 Paul Millsap $30,769,231 $31,652,784 4 2017-2018 Gordon Hayward $29,727,900 $30,581,550 5 2017-2018 Blake Griffin $29,512,900 $30,360,377 6 2017-2018 Kyle Lowry $28,903,704 $29,733,687
しっかり読み込めています。これでnbastatsパッケージににsalariesのデータを追加できました。