はだだだだ

定食にサラダは不要だと思う。

MENU

Rでスクレイピングしたデータをpackageにして公開してみた

以下の記事でウェブスクレイピングの練習をしました。
hadadada00.hatenablog.com

せっかくなので以下の記事で作成したpackageに追加して今後分析で簡単に使えるようにしてみました。
hadadada00.hatenablog.com

前回作成したpackageのローカル環境は以下のようになっています。
f:id:hadadada00:20190616235517p:plain

こちらにファイルを追加していきます。

まず、data-raw下にウェブスクレイピング用のRスクリプトファイルを作成します。

read_html.R
f:id:hadadada00:20190617000351p:plain

# 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というデータファイルが追加されました。
f:id:hadadada00:20190617000452p:plain

次にRディレクト下にsalaries.Rという名前でデータの説明ファイルを作成します。
f:id:hadadada00:20190617001031p:plain

#' 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が追加されました。
f:id:hadadada00:20190617001547p:plain

次にパッケージのロードとチェックを行います。
チェックでエラーがでなければローカルでの編集作業は終了です。

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のデータを追加できました。