Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
yutannihilation committed Oct 31, 2015
0 parents commit 8d48973
Show file tree
Hide file tree
Showing 15 changed files with 200 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .Rbuildignore
@@ -0,0 +1,2 @@
^.*\.Rproj$
^\.Rproj\.user$
3 changes: 3 additions & 0 deletions .gitignore
@@ -0,0 +1,3 @@
.Rproj.user
.Rhistory
.RData
14 changes: 14 additions & 0 deletions DESCRIPTION
@@ -0,0 +1,14 @@
Package: estatapi
Type: Package
Title: R package for e-Stat API
Version: 0.1
Date: 2015-11-01
Authors@R: person("Hiroaki", "Yutani", email = "yutani.ini@gmail.com", role = c("aut", "cre"))
Description: e-Stat is a service privided by Japanese Government.
License: MIT + file LICENSE
LazyData: TRUE
Imports:
httr,
dplyr,
purrr
RoxygenNote: 5.0.0
8 changes: 8 additions & 0 deletions NAMESPACE
@@ -0,0 +1,8 @@
# Generated by roxygen2: do not edit by hand

export(estat_api)
export(estat_getMetaInfo)
export(estat_getStatsData)
export(estat_getStatsList)
import(dplyr)
import(httr)
6 changes: 6 additions & 0 deletions R/estatapi.R
@@ -0,0 +1,6 @@
#' R package for e-Stat API
#'
#' @docType package
#' @import httr dplyr
#' @name estatapi
NULL
8 changes: 8 additions & 0 deletions R/getMetaInfo.R
@@ -0,0 +1,8 @@
#' getMetaInfo
#'
#' @export
estat_getMetaInfo <- function(appId, statsDataId, ...) {
j <- estat_api("rest/2.0/app/json/getMetaInfo", appId = appId, statsDataId = statsDataId, ...)

get_class_info(j$GET_META_INFO$METADATA_INF$CLASS_INF$CLASS_OBJ)
}
21 changes: 21 additions & 0 deletions R/getStatsData.R
@@ -0,0 +1,21 @@
#' getStatsData
#'
#' @export
estat_getStatsData <- function(appId, statsDataId, ...)
{
j <- estat_api("rest/2.0/app/json/getStatsData", appId = appId, statsDataId = statsDataId, ...)

class_info <- get_class_info(j$GET_STATS_DATA$STATISTICAL_DATA$CLASS_INF$CLASS_OBJ)

value_df <- j$GET_STATS_DATA$STATISTICAL_DATA$DATA_INF$VALUE %>%
bind_rows

value_df <- value_df %>%
mutate(value = as.numeric(`$`))

for (info_name in names(class_info)) {
value_df <- merge_class_info(value_df, class_info, info_name)
}

value_df
}
10 changes: 10 additions & 0 deletions R/getStatsList.R
@@ -0,0 +1,10 @@
#' getStatsList
#'
#' @export
estat_getStatsList <- function(appId, searchWord, ...) {
j <- estat_api("rest/2.0/app/json/getStatsList", appId = appId, searchWord = searchWord, ...)

j$GET_STATS_LIST$DATALIST_INF$TABLE_INF %>%
purrr::map(as_flattened_character) %>%
bind_rows
}
45 changes: 45 additions & 0 deletions R/util.R
@@ -0,0 +1,45 @@
#' Util

ESTAT_API_URL <- "http://api.e-stat.go.jp/"

#' @export
estat_api <- function(path, appId, ...)
{
res <- GET(
ESTAT_API_URL, path = path,
query = list(
appId = appId,
...
))

httr::warn_for_status(res)

content(res)
}

as_flattened_character <- function(x)
{
purrr::map(purrr::flatten(x), as.character)
}

force_bind_rows <- function(x)
{
if(is.list(x[[1]])) dplyr::bind_rows(x) else dplyr::as_data_frame(x)
}

get_class_info <- function(class_obj)
{
class_info <- lapply(class_obj, function(x) force_bind_rows(x$CLASS))
names(class_info) <- sapply(class_obj, function(x) x$"@id")
class_info
}

merge_class_info <- function(value_df, class_info, name)
{
info <- class_info[[name]] %>%
select(`@code`, `@name`)

key <- sprintf("@%s", name)
colnames(info) <- c(key, sprintf("%s_info", name))
left_join(value_df, info, by = key)
}
21 changes: 21 additions & 0 deletions estatapi.Rproj
@@ -0,0 +1,21 @@
Version: 1.0

RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default

EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8

RnwWeave: knitr
LaTeX: pdfLaTeX

AutoAppendNewline: Yes
StripTrailingWhitespace: Yes

BuildType: Package
PackageUseDevtools: Yes
PackageInstallArgs: --no-multiarch --with-keep.source
PackageRoxygenize: rd,collate,namespace
15 changes: 15 additions & 0 deletions man/ESTAT_API_URL.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions man/estat_getMetaInfo.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions man/estat_getStatsData.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions man/estat_getStatsList.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions man/estatapi.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 8d48973

Please sign in to comment.