티스토리 뷰
재정정보원 Q/A와 며칠 씨름을 하다가 2019년 예산을 뽑아내는 코드를 완성했다.
아직까지 pIndex는 어떤 변수인지 알 수가 없지만, 어쨋든 중복이 있더라도 주욱 뽑고 중복을 제거하는 방식을 사용하였다.
budget <- data.frame()
for (i in 1:9) {
url0 = "http://openapi.openfiscaldata.go.kr/TotalExpenditure1?"
api_key = "(인증키)"
type = "Type=xml&"
pIndex = paste("pIndex=", i, "&", sep = "")
pSize = "pSize=1000&"
# OJ_YY = "OJ_YY=2010"
FSCL_YY = "FSCL_YY=2019"
OFFC_NM = "OFFC_NM=기획재정부"
url = paste0(url0,
api_key,
type,
pIndex,
pSize,
FSCL_YY)
temp <- read_xml(url)
temp0 <- xmlParse(temp)
df <- xmlToDataFrame(getNodeSet(temp0, "//row"))
budget <- budget %>%
rbind(df)
}
# unique
budget <- budget %>%
unique()
이렇게 읽어들인 사업수는 8070개이다.
이를 규모별로 나누어보려고 다음과 같이 treemap을 그렸다. 1단계는 부처, 2단계는 프로그램명으로 구분하도록 하였다.
library(treemap)
budget %>%
group_by(OFFC_NM, PGM_NM) %>%
summarize(sum0 = round(sum(as.numeric(as.character(Y_YY_DFN_MEDI_KCUR_AMT))))*1e-9 ) %>%
mutate(sum = round(sum0,2)) %>%
treemap(index = c("OFFC_NM", "PGM_NM"),
vSize = "sum",
type = "index",
palette="RdYlBu",
fontsize.labels=c(14,7),
border.col=c("black","black"),
border.lwds=c(1,0.5) ,
title = "부처별 예산액")
그러니가 아래와 같은 그림이 나오더라.
한 가지 해결이 안된 문제는 트리맵 크기가 생각보다 작게 만들어지는데 크기 조정하는 방법을 모르겠다. 나중에는 D3.js 로 그리는 것이 하나의 방법이 아닐까 한다.
계획은 클릭하면 각 부처로 들어가는 걸 구축하는 건데 궁금해 하시는 분들이 많아서 중요부처별로 살펴보자.
'R' 카테고리의 다른 글
[R] R에서 GIS . 신규 커피집 표시하기 (0) | 2019.10.11 |
---|---|
[R] 시계열 끝에 값 표시하기 (0) | 2019.10.05 |
열린재정 open API 이용하여 parsing 하기 (3) | 2019.06.08 |
열린재정 open API 사용 후기 (0) | 2019.06.06 |
한국은행 open API 이용하기 (0) | 2019.06.06 |