###[3]통계데이터조회(Sttsapitbldata)-----------------------------------------------------------
Sttsapitbldata_url="https://www.nabostats.go.kr/openapi/Sttsapitbldata.do"
Type="xml"
pIndex=1
pSize=1000
STATBL_ID=""#필수)통계표ID
DTACYCLE_CD="YY"#필수)자료주기YY 혹은 MM으로 추정.개발가이드에 관련 내용이 없음으로 임의의 조합을 따름을 양해부탁드립니다.#분기와 반기가 있으나,Q나 H로시도했을시 실행되지 않습니다.
##데이터 주기가 월(MM)이여도 MM으로 불러들이면 오류가 납니다. 일괄 YY로 해야 데이터가 파싱됩니다.
WRTTIME_IDTFR_ID=""#선택)자료시점
STATBL_LIST=Sttsapitbl$STATBL_ID
#방법1
for(STATBL_IDinSTATBL_LIST){
print(paste0(Sttsapitbl_url,
'?Key=',api_key,
'&Type=',Type,
'&pIndex=',pIndex,
'&pSize=',pSize,
'&STATBL_ID=',STATBL_ID,
'&DTACYCLE_CD=',DTACYCLE_CD ##YY로불러서안되는것들은자료주기가월(MM)일가능성이높습니다.서비스통계목록의DTACYCLE_NM을참조부탁드립니다.
#,'&WRTTIME_IDTFR_ID=',WRTTIME_IDTFR_ID
))
}
https://www.nabostats.go.kr/portal/openapi/selectServicePage.do
본 사이트는 열린 재정과 비슷한 구조로 작동하나, 규칙성이나 체제가 훨씬 더 잘 잡혀있고
개발 가이드가 상세하여 훨씬 더 이용이 간편합니다. (물론 데이터 주기에 월과 분기, 반기라고 표시해두고 전부 YY(연도)로 돌아간다는 문제점은 있습니다만...)
[1] API 인증키를 발급받고 나면 R에서 필요 패키지를 설치해줍니다.
###NADOSTATS재경경제통계시스템
###InstallPackages/Libraries-------------------------------
if(!require('httr'))install.packages('httr');library('httr')
if(!require('tidyverse'))install.packages('tidyverse');library('tidyverse')
if(!require('jsonlite'))install.packages('jsonlite');library('jsonlite')
if(!require('rvest'))install.packages('rvest');library('rvest')
if(!require('dplyr'))install.packages('dplyr');library('dplyr')
if(!require('stringr'))install.packages('stringr');library('stringr')
if(!require('magrittr'))install.packages('magrittr');library('magrittr')
if(!require('shiny'))install.packages('shiny');library('shiny')
if(!require('DT'))install.packages('DT');library('DT')
if(!require('XML'))install.packages('XML');library('XML')
if(!require('xml2'))install.packages('xml2');library('xml2')
[2] API키를 정의하고, xml 파싱 구문을 function으로 정리해주도록 하겠습니다.
###API인증키
api_key="[개인 API 코드]"
#FUNCTION--------------------------------------------------
xmleasyfun=function(url){
temp=read_xml(url)
temp0=xmlParse(temp)
df=xmlToDataFrame(getNodeSet(temp0,"//row"))
}
[3] 통계목록을 불러와줍니다. 아주 체계적으로 잘 정리되어있습니다.
###[1]서비스통계목록(Sttsapitbl)-----------------------------------------------------------
#parametersetting
Sttsapitbl_url="https://www.nabostats.go.kr/openapi/Sttsapitbl.do"
Type="xml"
pIndex=1
pSize=1000
STATBL_ID=""#선택)통계표ID
STATBL_NM=""#선택)통계표명
Sttsapitbl=paste0(Sttsapitbl_url,
'?Key=',api_key,
'&Type=',Type,
'&pIndex=',pIndex,
'&pSize=',pSize
)
Sttsapitbl=xmleasyfun(Sttsapitbl) #함수를이용한경우
Sttsapitbl
DT::datatable(Sttsapitbl)
write.csv(Sttsapitbl,"Sttsapitbl.csv")
#위 이미지처럼 통계표번호와 통계목록명이 나옴으로 작성에 크게 참고가 됩니다. 공공 데이터의 아주 좋은 사례입니다.
###[2]통계세부항목조회(Sttsapitbl)-----------------------------------------------------------
Sttsapitblitm_url="https://www.nabostats.go.kr/openapi/Sttsapitblitm.do"
Type="xml"
pIndex=1
pSize=1000
STATBL_ID=""#필수)통계표ID
STATBL_LIST=Sttsapitbl$STATBL_ID
for(STATBL_ID in STATBL_LIST){
print(paste0(Sttsapitbl_url,
'?Key=',api_key,
'&Type=',Type,
'&pIndex=',pIndex,
'&pSize=',pSize,
'&STATBL_ID=',STATBL_ID))
}
###PASTEURL
STATBL_NM=Sttsapitbl$STATBL_NM
write.csv(STATBL_NM,'STATBL_NM.csv') #여기서 얻은 통계명을 이후 엑셀 템플릿에 붙여 for loop 구문을 코드로 만들어줍니다.
#엑셀 템플릿은 이하와 같습니다.
###[3]통계데이터조회(Sttsapitbldata)-----------------------------------------------------------
Sttsapitbldata_url="https://www.nabostats.go.kr/openapi/Sttsapitbldata.do"
Type="xml"
pIndex=1
pSize=1000
STATBL_ID=""#필수)통계표ID
DTACYCLE_CD="YY"#필수)자료주기YY 혹은 MM으로 추정.개발가이드에 관련 내용이 없음으로 임의의 조합을 따름을 양해부탁드립니다.#분기와 반기가 있으나,Q나 H로시도했을시 실행되지 않습니다.
##데이터 주기가 월(MM)이여도 MM으로 불러들이면 오류가 납니다. 일괄 YY로 해야 데이터가 파싱됩니다.
WRTTIME_IDTFR_ID=""#선택)자료시점
STATBL_LIST=Sttsapitbl$STATBL_ID
#방법1
for(STATBL_IDinSTATBL_LIST){
print(paste0(Sttsapitbl_url,
'?Key=',api_key,
'&Type=',Type,
'&pIndex=',pIndex,
'&pSize=',pSize,
'&STATBL_ID=',STATBL_ID,
'&DTACYCLE_CD=',DTACYCLE_CD ##YY로불러서안되는것들은자료주기가월(MM)일가능성이높습니다.서비스통계목록의DTACYCLE_NM을참조부탁드립니다.
#,'&WRTTIME_IDTFR_ID=',WRTTIME_IDTFR_ID
))
}
#[4]통계 용어사전 조회(DicApiList)----------------------------------------------------------
DicApiList_url="https://www.nabostats.go.kr/openapi/DicApiList.do"
Type="xml"
pIndex=1
pSize=1000
DIC_TITLE=""#선택)용어명
DicApiList=paste0(DicApiList_url,
'?Key=',api_key,
'&Type=',Type,
'&pIndex=',pIndex,
'&pSize=',pSize
)
DicApiList=xmleasyfun(DicApiList)#함수를이용한경우
DicApiList
DT::datatable(DicApiList)
write.csv(DicApiList,"DicApiList.csv")
#전체코드
'지식 창고 > R 언어' 카테고리의 다른 글
KOSIS 통계표 정리 (0) | 2022.06.17 |
---|---|
금융통계정보시스템 OPEN API R 코드 (0) | 2022.05.25 |
[R 웹 스크래핑 코드] 열린 재정 OPEN API 이용하기 (0) | 2022.05.25 |
OPEN DART R로 크롤링하기 -1) 기본 파라미터 설정 (0) | 2022.04.22 |
공공데이터 포털 OPEN API 데이터 R로 불러오기 (0) | 2022.03.24 |
댓글