오픈 API를 활용한 공공데이터 불러오기(데이터 포맷: json)에 이어서 json 형태의 데이터 포맷을 불러오는 R 프로그래밍을 알아보도록 할게요. 공공데이터를 활용하기 위한 준비 단계는 여기를 참고하시면 됩니다.
비교를 위해서 지난번 포스팅에서와 같은 데이터를 불러와 보도록 할게요.
데이터 형식을 확인하기 위한 샘플데이터 확인하기
결과 형식을 json으로 변경한 후에 미리 보기 버튼을 클릭하시면,
아래와 같은 샘플데이터를 볼 수 있어요.
이를 참고해서 원하는 데이터를 추출해 보도록 할게요.
오픈 API URL구조에 대해서는 지난번 포스팅에서 설명해서 넘어가도록 할게요.
데이터 추출을 위한 R code(with jsonlite 패키지)
install.packages('jsonlite') # json 형식의 데이터 전처리를 위한 패키지 설치. 이미 설치되어 있으면 생략
install.packages('httr') # data를 GET 하기 위한 함수 GET 이용을 위한 패키지 설치. 이미 설치되어 있으면 생략
install.packages('tidyverse') # %>% 연산자 사용을 위한 패키지 설치. 이미 설치되어 있으면 생략
# 패키지 로드
library(jsonlite)
library(httr)
library(tidyverse)
# URL 입력
URL <- "http://apis.data.go.kr/1160100/service/GetFnCoBasiInfoService/getFnCoOutl"
## 인증키
key <- "********" # " " 안에 본인이 부여받은 인증키 입력
## 페이지 위치 지정
pageNo <- 1
## 오픈 API 호출 시 얻게 되는 데이터의 개수 지정
rows <- 10
# 추출 데이터 포맷 지정
type_data_format <- "json"
# GET 함수 활용하여 API로 호출
res <- GET(url = URL,
query = list(serviceKey = key %>% I(),
pageNo = 1,
numOfRows = 10,
resultType = type_data_format,
basDt = 20200408))
# 호출 결과 확인
print(x = res)
# json 형태의 data를 text로 추출
res %>%
content(as = 'text', encoding = 'UTF-8') %>%
fromJSON() -> json
# 추출된 데이터 구조 확인
str(json)
# 오픈 API 호출 결과 데이터의 개수 확인
numOfRows <- json$response$body$numOfRows
# 전체 데이터의 개수 확인
totalCount <- json$response$body$totalCount
# 총 오픈 API 호출 횟수 계산
loopCount <- ceiling(totalCount/numOfRows)
# 전체 데이터를 저장할 변수 선언
finalTotalData <- data.frame()
# 오픈 API 호출을 총 오픈API 호출 횟수만큼 반복 실행
for (i in 1:loopCount) {
# GET 함수 활용하여 API로 호출
res <- GET(url = URL,
query = list(serviceKey = key %>% I(),
pageNo = i,
numOfRows = numOfRows,
resultType = type_data_format,
basDt = '20200408'))
# json 형태의 data를 text로 추출
res %>%
content(as = 'text', encoding = 'UTF-8') %>%
fromJSON() -> json
# 데이터 프레임만 선택하여 doc 객체에 저장
doc <- json$response$body$items$item
# 추출한 데이터를 전체 데이터를 저장할 변수에 누적 저장
finalTotalData <- rbind(finalTotalData, doc)
}
# 데이터 확인하기
View(finalTotalData)
# CSV 파일로 저장하기
write.csv(finalTotalData, "금융회사기업개요조회(json).csv", row.names = FALSE)
아래에 링크되어 있는 이전 포스트 내용의 결과와 비교해 보면, 동일한 데이터가 추출되었음을 확인할 수 있어요!
(참고로 열의 순서는 xml 데이터 형식의 순서와 다릅니다.)
이상으로 오픈 API를 활용한 공공데이터를 R을 활용해서 추출하는 방법에 대해서 알아보았습니다.
반응형
'R 프로그래밍 > R advance' 카테고리의 다른 글
오픈 API를 활용한 공공데이터 불러오기(데이터 포맷: xml) (25) | 2022.01.07 |
---|---|
와이드 포맷과 롱 포맷 간 데이터 변환 (0) | 2021.12.28 |
[R그래픽스]커뮤니케이션을 위한 그래픽 (0) | 2021.07.20 |
[R데이터다루기]데이터 변환 (0) | 2021.07.18 |
[R그래픽스]데이터 시각화 (0) | 2021.07.17 |
댓글