Проаналізуйте JSON за допомогою R


90

Я досить новачок у R, але чим більше його використовую, тим більше я бачу, наскільки він насправді потужний над SAS або SPSS. Однією з основних переваг, на мою думку, є можливість отримувати та аналізувати дані з Інтернету. Я думаю, це можливо (і, можливо, навіть просто), але я прагну проаналізувати дані JSON, які є загальнодоступними в Інтернеті. Я не програміст, тому будь-яка допомога та вказівки, які ви можете надати, будуть дуже вдячні. Навіть якщо ви вкажете мені базовий робочий приклад, я, мабуть, зможу це пропрацювати.

Відповіді:


89

RJSONIO від Omegahat - ще один пакет, який надає можливості для читання та запису даних у форматі JSON.

rjson не використовує методи S4 / S3, тому не є легко розширюваним, але все ж корисним. На жаль, він не використовує векторизовані операції, а тому занадто повільний для нетривіальних даних. Подібним чином, для зчитування даних JSON у R це дещо повільно і тому не масштабується до великих даних, якщо це може бути проблемою.

Оновлення (новий пакет 2013-12-03):

jsonlite : Цей пакет є форкоюRJSONIO пакету. Він будується на синтаксичному аналізаторі, RJSONIOале реалізує інше відображення між R-об'єктами та рядками JSON. Код C у цьому пакеті здебільшого з RJSONIOпакету, код R був переписаний з нуля. На додаток до випадаючих замін для fromJSONта toJSON, пакет має функції для серіалізації об'єктів. Крім того, пакет містить безліч модульних тестів, щоб переконатися, що всі випадки краю кодовані та декодовані послідовно для використання з динамічними даними в системах та додатках.


3
Я знайшов це порівняння rjson, RJSONIO та jsonlite корисним
Ерік

2
Посилання для порівняння вище мертве. Є чи це правильна посилання? (різниця в https)
woodvi

58

Пакет jsonlite простий у використанні і намагається перетворити json у фрейми даних.

Приклад:

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
Це було неймовірно просто у використанні для того, що мені потрібно. Щиро дякую
Невідомий кодер

документ <- відJSON (файл = url); # але час
очікування

1
Люблю це. Здається набагато кращим, ніж безлад, створений rjson.
randominstanceOfLivingThing

1
Якщо оригінальний формат json вже не сплющений, jsonliteвін більш-менш корисний, як виделка для їжі супу.
генеровано

19

Ось приклад, якого не вистачає

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

2
це спрацювало для мене, але ви не хочете передавати рядок для імені змінної файлу, як показано.
mrjrdnthms

4

Функція відJSON () у RJSONIO, rjson та jsonlite не повертає простий 2D-файл data.frame для складних вкладених об'єктів json.

Щоб подолати це, ви можете використовувати tidyjson . Він приймає json і завжди повертає data.frame. Наразі він недоступний у CRAN, ви можете отримати його тут: https://github.com/sailthru/tidyjson

Оновлення: tidyjson тепер доступний у мові cran, ви можете встановити його безпосередньо за допомогоюinstall.packages("tidyjson")


2

Для запису rjson та RJSONIO дійсно змінюють тип файлу, але вони насправді не аналізують самі по собі. Наприклад, я отримую потворні дані MongoDB у форматі JSON, перетворюю їх за допомогою rjson або RJSONIO, а потім використовую unlist та тонни ручного виправлення, щоб насправді проаналізувати їх у корисну матрицю.


1

Спробуйте навести код нижче, використовуючи 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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.