2010-01-14 3 views
74

저는 R에 상당히 익숙하지만 사용할수록 SAS 나 SPSS보다 얼마나 강력한지를 더 많이 봅니다. 주요 이점 중 하나는 웹에서 데이터를 가져 와서 분석 할 수 있다는 것입니다. 이 방법이 가능할 수도 있지만 (심지어 간단 할 수도 있음), 웹에서 공개적으로 사용할 수있는 JSON 데이터를 파싱하려고합니다. 나는 프로그래머가 아니므로 어떤 도움이나지도를 해주시면 큰 도움이 될 것입니다. 나를 기본적인 작업 예제로 가르켜 주더라도 그것을 통해 작업 할 수있을 것입니다.Parse JSON with R

답변

78

RJSONIO Omegahat은 JSON 형식으로 데이터를 읽고 쓸 수있는 기능을 제공하는 또 다른 패키지입니다.

rjson은 S4/S3 방법을 사용하지 않으므로 쉽게 확장 할 수는 없지만 여전히 유용합니다. 불행히도 벡터화 연산을 사용하지 않으므로 중요하지 않은 데이터의 경우 너무 느립니다. 마찬가지로 JSON 데이터를 R로 읽어 들이기 위해서는 다소 느리므로 대용량 데이터에 맞게 확장하지 않아도된다.

업데이트 (새 패키지 2013년 12월 3일) :

jsonlite :이 패키지는 RJSONIO 패키지의 포크입니다. RJSONIO의 파서를 기반으로하지만 R 객체와 JSON 문자열 사이에 다른 매핑을 구현합니다. 이 패키지의 C 코드는 대부분 RJSONIO 패키지에서 가져온 것이므로 R 코드는 처음부터 다시 작성되었습니다. fromJSONtoJSON의 드롭 인 대체 외에도 패키지에는 객체를 직렬화하는 기능이 있습니다. 또한 패키지에는 시스템 및 응용 프로그램의 동적 데이터와 함께 사용하기 위해 모든 엣지 케이스가 일관되게 인코딩되고 디코딩되도록하는 많은 단위 테스트가 포함되어 있습니다. 여기

+3

난 rjson, RJSONIO 여기서이 비교 (http://rstudio-pubs-static.s3.amazonaws.com/31702_9c22e3d1a0c44968a4a1f9656f1800ab.html)을 발견하고, 상기 비교 링크가 죽었 – Eric

+1

도움을 jsonlite. [this] (https://rstudio-pubs-static.s3.amazonaws.com/31702_9c22e3d1a0c44968a4a1f9656f1800ab.html) 올바른 링크입니까?(차이점은 https입니다.) – woodvi

19

누락 된 예제 파일 형식을 변경하려면 어떻게해야합니까 기록, rjson 및 RJSONIO를 들어

library(rjson) 
url <- 'http://someurl/data.json' 
document <- fromJSON(file=url, method='C') 
+2

이 방법은 저에게 효과적이지만, 그림과 같이 파일 변수 이름에 문자열을 전달하고 싶지는 않습니다. – mrjrdnthms

2

,하지만 그들은 정말 자체 분석하지 않습니다. 예를 들어 JSON 형식의 추악한 MongoDB 데이터를 rjson 또는 RJSONIO로 변환 한 다음 unlist 및 수동 수정을 사용하여 실제로 사용 가능한 행렬로 구문 분석합니다.

42

jsonlite 패키지는 사용하기 쉽고 json을 데이터 프레임으로 변환하려고합니다.

예 : RJSONIO에

library(jsonlite) 

# url with some information about project in Andalussia 
url <- 'http://www.juntadeandalucia.es/export/drupaljda/ayudas.json' 

# read url and convert to data.frame 
document <- fromJSON(txt=url) 
+1

이것은 내가 필요로하는 것을 위해 사용하기가 놀랍도록 쉬웠다. 너무 감사합니다 –

+0

문서 <- fromJSON (file = url); # 요청 시간이 초과되었습니다. – EngrStudent

+1

Love this. rjson에 의해 만들어지는 혼란보다 훨씬 좋아 보인다. – randominstanceOfLivingThing

3

fromJSON 함수()와 rjson jsonlite 복잡한 중첩 JSON 객체 간단한 2 차원 data.frame 반환하지 않는다.

이 문제를 극복하려면 tidyjson을 사용할 수 있습니다. json을 사용하며 항상 data.frame을 반환합니다. 그것은 현재 CRAN에서 availble을하지, 당신은 여기를 얻을 수 있습니다 : https://github.com/sailthru/tidyjson

업데이트 : tidyjson이 크랑에서 사용할 수 있습니다, 당신이 직접

0

install.packages("tidyjson")를 사용하여 설치할 수 있습니다 콘솔

에 RJSONIO를 사용하여 코드를 아래에보십시오
library(RJSONIO) 
library(RCurl) 


json_file = getURL("https://raw.githubusercontent.com/isrini/SI_IS607/master/books.json") 

json_file2 = RJSONIO::fromJSON(json_file) 

head(json_file2)