استيراد البيانات من ملف JSON إلى R




(4)

إذا كان عنوان URL هو https ، مثلما هو مستخدم في Amazon S3 ، فاستخدم getURL

json <- fromJSON(getURL('https://s3.amazonaws.com/bucket/my.json'))

هل هناك طريقة لاستيراد البيانات من ملف JSON إلى R؟ وبشكل أكثر تحديدًا ، يكون الملف صفيفًا من كائنات JSON ذات حقول السلسلة والكائنات والصفائف. حزمة RJSON ليست واضحة تمامًا حول كيفية التعامل مع هذا http://cran.r-project.org/web/packages/rjson/rjson.pdf .


الحزمة البديلة هي RJSONIO. لتحويل قائمة متداخلة ، يمكن أن يساعد lapply في:

l <- fromJSON('[{"winner":"68694999",  "votes":[ 
   {"ts":"Thu Mar 25 03:13:01 UTC 2010", "user":{"name":"Lamur","user_id":"68694999"}},   
   {"ts":"Thu Mar 25 03:13:08 UTC 2010", "user":{"name":"Lamur","user_id":"68694999"}}],   
  "lastVote":{"timestamp":1269486788526,"user":
   {"name":"Lamur","user_id":"68694999"}},"startPrice":0}]'
)
m <- lapply(
    l[[1]]$votes, 
    function(x) c(x$user['name'], x$user['user_id'], x['ts'])
)
m <- do.call(rbind, m)

يعطي معلومات عن الأصوات في المثال الخاص بك.


سيقوم jsonlite باستيراد JSON في إطار بيانات. يمكن بشكل اختياري تسوية الكائنات المتداخلة. ستكون الصفائف المتداخلة إطارات البيانات.

> library(jsonlite)
> winners <- fromJSON("winners.json", flatten=TRUE)
> colnames(winners)
[1] "winner" "votes" "startPrice" "lastVote.timestamp" "lastVote.user.name" "lastVote.user.user_id"
> winners[,c("winner","startPrice","lastVote.user.name")]
    winner startPrice lastVote.user.name
1 68694999          0              Lamur
> winners[,c("votes")]
[[1]]
                            ts user.name user.user_id
1 Thu Mar 25 03:13:01 UTC 2010     Lamur     68694999
2 Thu Mar 25 03:13:08 UTC 2010     Lamur     68694999

أولاً قم بتثبيت حزمة RJSONIO و RCurl:

install.packages("RJSONIO")
install.packages("(RCurl")

جرب أدناه التعليمات البرمجية باستخدام 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)







r