JSON'u R ile ayrıştır


91

R konusunda oldukça yeniyim, ancak onu ne kadar çok kullanırsanız, SAS veya SPSS'den daha güçlü olduğunu o kadar çok görüyorum. Gördüğüm kadarıyla en büyük avantajlardan biri, web'den veri alma ve analiz etme becerisidir. Bunun mümkün (ve hatta basit) olduğunu hayal ediyorum, ancak web'de halka açık olan JSON verilerini ayrıştırmak istiyorum. Ben kesinlikle bir programcı değilim, bu yüzden sağlayabileceğiniz herhangi bir yardım ve talimat çok takdir edilecektir. Beni temel bir çalışma örneğine yönlendirseniz bile, muhtemelen üzerinde çalışabilirim.

Yanıtlar:


91

Omegahat'tan RJSONIO, JSON formatında veri okumak ve yazmak için olanaklar sağlayan başka bir pakettir.

rjson , S4 / S3 yöntemlerini kullanmaz ve bu nedenle kolaylıkla genişletilebilir değildir, ancak yine de yararlıdır. Ne yazık ki, vektörleştirilmiş işlemleri kullanmaz ve bu nedenle önemsiz olmayan veriler için çok yavaştır. Benzer şekilde, JSON verilerini R'ye okumak için biraz yavaştır ve bu nedenle bir sorun olması durumunda büyük verilere ölçeklenmez.

Güncelleme (yeni Paket 2013-12-03):

jsonlite : Bu paket, paketin bir çatalı RJSONIO. Ayrıştırıcı üzerinde oluşturulur RJSONIOancak R nesneleri ve JSON dizeleri arasında farklı bir eşleme uygular. Bu paketteki C kodu çoğunlukla RJSONIOPakettedir, R kodu sıfırdan yeniden yazılmıştır. Ayrıca için ikameler içinde damla fromJSONve toJSONpaket serialize nesnelere fonksiyonları vardır. Ayrıca, paket, sistemlerde ve uygulamalarda dinamik verilerle kullanım için tüm uç durumların tutarlı bir şekilde kodlanıp kodunun çözüldüğünden emin olmak için birçok birim testi içerir.


3
Bulduğum bu karşılaştırmayı rjson, RJSONIO arasında ve yararlı jsonlite
Eric

2
Yukarıdaki karşılaştırma bağlantısı öldü. Mı bu doğru bağlantı? (fark https)
woodvi

58

Jsonlite paket veri çerçevelerinin içine json dönüştürmek için kullanımı ve deneme kolaydır.

Misal:

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
İhtiyacım olan şey için kullanımı inanılmaz derecede kolaydı. Çok teşekkür ederim
Unknown Coder

belge <- fromJSON (dosya = url); # ama istek zaman aşımına
uğradı

1
Bunu sev. Rjson tarafından yaratılan dağınıklıktan çok daha iyi görünüyor.
randominstanceOfLivingThing

1
Orijinal json biçimi zaten düzleştirilmediği sürece, jsonliteçorba yemek için bir çatal kadar az ya da çok faydalıdır.
2017

19

İşte eksik örnek

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

2
bu benim için çalıştı, ancak gösterildiği gibi dosya değişkeni adı için bir dize geçirmek istemiyorsunuz.
mrjrdnthms

4

RJSONIO, rjson ve jsonlite'daki JSON () işlevi, karmaşık iç içe geçmiş json nesneleri için basit bir 2D data.frame döndürmez.

Bunun üstesinden gelmek için tidyjson'u kullanabilirsiniz . Bir json alır ve her zaman bir data.frame döndürür. Şu anda CRAN'da mevcut değil, buradan alabilirsiniz: https://github.com/sailthru/tidyjson

Güncelleme: tidyjson artık Cran'da mevcut, doğrudan kullanarak kurabilirsinizinstall.packages("tidyjson")


2

Kayıt için, rjson ve RJSONIO dosya türünü değiştirir, ancak gerçekten kendi başlarına ayrıştırmazlar. Örneğin, JSON formatında çirkin MongoDB verilerini alıyorum, rjson veya RJSONIO ile dönüştürüyorum, sonra bunları kullanılabilir bir matrise ayrıştırmak için liste dışı ve tonlarca manuel düzeltme kullanıyorum.


1

Konsolda RJSONIO kullanarak aşağıdaki kodu deneyin

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.