JSON(JavaScript Object Notation) 포맷의 데이터를 R에서 읽어 들이기
위해 파싱해야 하는 과정이 필요하다.
rjson 라는 패키지가 이를 도와주는데 패키지 안에는 toJSON()
,
fromJSON()
2개의 함수가 있으며 이를 이용한 json 파일을 읽는
실습을 해 보겠다.
Ready
Example data
실습을 하기 위하여 아래와 같은 json 타입의 데이터가 있다고
가정한다.
아래의 데이터는 JSON 형을
설명하는 위키백과의 예제데이터를 적절히 수정한 것이다.
[
{
"Name": "Test",
"Age": 25,
"Sex": "F",
"Address": "Seoul",
"Hobby": "Basketball"
}
]
위 예제를 워킹디렉토리의 test.json
로 저장한다.
어떠한 텍스트에디터를 이용하던 상관없으며, 저장방법은 위의 JSON 형식
텍스트를 복사한 다음 “test.json” 이란 파일명으로 저장하면 된다.
위 그림은 Sublime text 텍스트 에디터를 이용해 저장해 본 예시이다.
jsonlite package load
rjson 패키지 설치 및 로드를 한다.
install.packages("rjson")
library(rjson)
toJSON()
,
fromJSON()
함수 이용해보기
fromJSON()
fromJSON()
함수는 JSON 형 데이터를 R에서 헨들링 할 수
있도록 한다. (read.JSON 와 같은 함수명이 더 어울릴 수도..)
<- fromJSON(file = "test.json")
data data
## [[1]]
## [[1]]$Name
## [1] "Test"
##
## [[1]]$Age
## [1] 25
##
## [[1]]$Sex
## [1] "F"
##
## [[1]]$Address
## [1] "Seoul"
##
## [[1]]$Hobby
## [1] "Basketball"
class(data)
## [1] "list"
list 형식으로 반환된다.
data.frame 형태로 변환해 보면 다음과 같다.
<- as.data.frame(data)
df df
## Name Age Sex Address Hobby
## 1 Test 25 F Seoul Basketball
toJSON()
toJSON()
은 fromJSON()
의 반대의 성격을
가진다.
R의 list, data.frame 형 데이터를 JSON 형으로 변환한다.
방금만든 df
객체를 다시 JSON 형태로 바꾸기 위해서
toJSON(df)
를 실행시키면
toJSON(df)
## [1] "{\"Name\":\"Test\",\"Age\":25,\"Sex\":\"F\",\"Address\":\"Seoul\",\"Hobby\":\"Basketball\"}"
다시 JSON 형으로 돌아간다.
참고로 rjson package 말고도
간단히 이용할 수 있는 jsonlite package 도 있다.
이 패키지의 toJSON()
함수는 pretty 옵션인자가 더 있는데
json 형을 인지하기 쉽게 단락을 나누고 indent 를 주어
가시적으로 반환하는 기능이 있다.
library(jsonlite)
toJSON(df, pretty = T)
## [
## {
## "Name": "Test",
## "Age": 25,
## "Sex": "F",
## "Address": "Seoul",
## "Hobby": "Basketball"
## }
## ]
첫 서두에 있는 예제 데이터와 똑같이 출력된 것을 볼 수 있다.