Câu hỏi Phân tích cú pháp JSON bằng R


Tôi khá mới với R, nhưng càng sử dụng nó, tôi càng thấy nó mạnh mẽ như thế nào trên SAS hoặc SPSS. Chỉ một trong những lợi ích chính, như tôi thấy, là khả năng nhận và phân tích dữ liệu từ web. Tôi tưởng tượng điều này là có thể (và thậm chí có thể đơn giản), nhưng tôi đang tìm cách phân tích cú pháp dữ liệu JSON có sẵn công khai trên web. Tôi không phải là một lập trình viên của bất kỳ căng, vì vậy bất kỳ trợ giúp và hướng dẫn bạn có thể cung cấp sẽ được đánh giá rất nhiều. Ngay cả khi bạn chỉ cho tôi một ví dụ làm việc cơ bản, tôi có thể làm việc thông qua nó.


76
2018-01-14 03:03


gốc




Các câu trả lời:


RJSONIO từ Omegahat là một gói khác cung cấp cơ sở cho việc đọc và ghi dữ liệu ở định dạng JSON.

rjson không sử dụng phương pháp S4 / S3 và do đó không dễ dàng mở rộng, nhưng vẫn hữu ích. Thật không may, nó không được sử dụng các hoạt động được vector hóa và vì vậy quá chậm đối với dữ liệu không tầm thường. Tương tự như vậy, để đọc dữ liệu JSON vào R, nó hơi chậm và do đó không mở rộng đến dữ liệu lớn, đây có phải là một vấn đề hay không.

Cập nhật (Gói mới 2013-12-03):

jsonlite: Gói này là một ngã ba của RJSONIO gói. Nó xây dựng trên trình phân tích cú pháp từ RJSONIO nhưng thực hiện một ánh xạ khác nhau giữa các đối tượng R và các chuỗi JSON. Mã C trong gói này chủ yếu là từ RJSONIO Gói, mã R đã được viết lại từ đầu. Ngoài các thay thế thả xuống cho fromJSON và toJSON, gói có chức năng sắp xếp các đối tượng. Hơn nữa, gói chứa rất nhiều bài kiểm tra đơn vị để đảm bảo rằng tất cả các trường hợp cạnh được mã hóa và giải mã một cách nhất quán để sử dụng với dữ liệu động trong các hệ thống và ứng dụng.


78
2018-01-14 08:05



tôi đã tìm thấy so sánh này của rjson, RJSONIO và jsonlite hữu ích - Eric
Liên kết so sánh ở trên đã chết. Là điều này liên kết chính xác? (sự khác biệt là https) - woodvi


Các jsonlite gói dễ sử dụng và cố gắng chuyển đổi json thành các khung dữ liệu.

Thí dụ:

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)

43
2017-11-23 14:32



Điều này cực kỳ dễ sử dụng cho những gì tôi cần. Cảm ơn bạn rất nhiều - Unknown Coder
tài liệu <- fromJSON (file = url); # nhưng yêu cầu hết thời gian - EngrStudent
Thích cái này. Có vẻ tốt hơn nhiều so với sự lộn xộn do rjson tạo ra. - randominstanceOfLivingThing
Trừ khi định dạng json gốc đã được làm phẳng, jsonlite ít nhiều hữu ích như một cái nĩa để ăn súp. - gented


Đây là ví dụ bị thiếu

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

19
2017-10-28 10:57



điều này làm việc cho tôi nhưng bạn không muốn chuyển một chuỗi cho tên biến tệp như được hiển thị. - mrjrdnthms


Hàm fromJSON () trong RJSONIO, rjson và jsonlite không trả về một data.frame 2D đơn giản cho các đối tượng json lồng nhau phức tạp.

Để khắc phục điều này, bạn có thể sử dụng tidyjson. Nó mất một json và luôn trả về một data.frame. Nó hiện không có sẵn trong CRAN, bạn có thể lấy nó ở đây: https://github.com/sailthru/tidyjson

Cập nhật:  tidyjson hiện có sẵn trong cran, bạn có thể cài đặt nó trực tiếp bằng install.packages("tidyjson")


3
2017-12-03 10:43





Đối với các hồ sơ, rjson và RJSONIO làm thay đổi loại tập tin, nhưng họ không thực sự phân tích mỗi se. Ví dụ, tôi nhận dữ liệu MongoDB xấu ở định dạng JSON, chuyển đổi nó bằng rjson hoặc RJSONIO, sau đó sử dụng unlist và tấn sửa chữa thủ công để phân tích nó thành ma trận có thể sử dụng được.


2
2018-02-26 17:36





Hãy thử mã dưới đây bằng cách sử dụng RJSONIO trong bảng điều khiển

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)

1
2017-08-01 08:28