একটি JSON ফাইল থেকে আর এ ডেটা আমদানি করা হচ্ছে


166

কোনও JSON ফাইল থেকে আর-তে ডেটা আমদানির কোনও উপায় আছে কি? আরও সুনির্দিষ্টভাবে ফাইলটি স্ট্রিং ফিল্ডস, অবজেক্টস এবং অ্যারে সহ জেএসওএন অবজেক্টের একটি অ্যারে। এই http://cran.r-project.org/web/packages/rjson/rjson.pdf কীভাবে মোকাবেলা করা যায় সে সম্পর্কে আরজেএসএন প্যাকেজটি খুব পরিষ্কার নয় ।


3
সদৃশ: স্ট্যাকওভারফ্লো / প্রশ্ন / 2061897 / parse-json-with-r । আপনার যদি কোনও নির্দিষ্ট ডেটা উদাহরণ থাকে তবে তা সাহায্য করবে। অন্যথায় আরজেসন ডেটা ম্যানিপুলেশনের পাশাপাশি আপনার যা প্রয়োজন তা করতে পারে (যেমন অ্যাপ্লিকেশন ফাংশন বা প্লেয়ার সহ)।
শেন

এই প্রশ্নের সাথেও সমান: স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / 2260147/…
শেন

হাই শেন, আরজেএসন ব্যবহার করার চেষ্টা করেছেন। আমি বেশিরভাগই প্রয়োজনীয় ডেটা ম্যানিপুলেশনে আগ্রহী। আমি যে JSON ফাইলের সাথে কাজ করছি তার একটি উদাহরণ এখানে। উদাহরণ.জসন: [{"বিজয়ী": "68694999", "ভোট": [{"টিএস": "থু মার্ 25 03:13:01 ইউটিসি 2010", "ব্যবহারকারী": name "নাম": "লামুর", "ইউজার_আইডি": "68694999"}}, {"টিএস": "থু মার্চ 25 03:13:08 ইউটিসি 2010", "ব্যবহারকারী": {"নাম": "লামুর", "ব্যবহারকারী_আইডি": "68694999"}} ], "সর্বশেষ ভোট": time "টাইমস্ট্যাম্প": 1269486788526, "ব্যবহারকারী": name "নাম": "লামুর", "ব্যবহারকারী_আইডি": "68694999"}}, "স্টার্টপ্রিস": 0}, ...]
ব্যবহারকারীর 1313967

1
একটি সতর্কতা: যদি JSON ফাইলটি সত্যই বড় হয় তবে স্পষ্টতই .so বা .dll লাইব্রেরিগুলি এটি প্রক্রিয়া করবে না। একটি পছন্দের বিন্যাসটি নেটডিসিএফ, তবে কিছু সংস্থা এই বিষয়টি সম্পর্কে অবগত নয়।

উত্তর:


187

প্রথমে rjsonপ্যাকেজটি ইনস্টল করুন :

install.packages("rjson")

তারপর:

library("rjson")
json_file <- "http://api.worldbank.org/country?per_page=10&region=OED&lendingtype=LNX&format=json"
json_data <- fromJSON(paste(readLines(json_file), collapse=""))

আপডেট: সংস্করণ 0.2.1 থেকে

json_data <- fromJSON(file=json_file)

1
নোট করুন যে সম্পাদনাটি লাইব্রেরির কোনও আপডেটের উল্লেখ করছে, আর-তে নয় the আপডেটটি পূর্ববর্তী উদাহরণের শেষ লাইনটি পরিবর্তন করে এবং আপনাকে এখনও উপরের মতো লাইব্রেরিতে লোড করতে হবে।
স্টিভেন ওয়াটারম্যান

90

jsonliteJSON একটি ডেটা ফ্রেমে আমদানি করবে। এটি estedচ্ছিকভাবে নেস্টেড অবজেক্টগুলিকে সমতল করতে পারে। নেস্টেড অ্যারেগুলি ডেটা ফ্রেম হবে।

> 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

কাফনের কাপড়! ফলাফল ফিল্টার করার সময় তালিকার পরিবর্তে ডেটা.ফ্রেমে কাজ করা সত্যিই সহজ!
এমএস বেরেন্ডস

31

বিকল্প প্যাকেজ হ'ল আরজেএসনিও। নেস্টেড তালিকায় রূপান্তর করতে, ল্যাপলি সাহায্য করতে পারে:

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)

আপনার উদাহরণে ভোটের তথ্য দেয়।


1
x$user$name, x$user$user_idএখন করা উচিত x$user['name'], x$user['user_id']। এছাড়াও m <- do.call(rbind, m)তালিকাটিকে ম্যাট্রিক্সে রূপান্তর করার আরও ভাল উপায় হতে পারে।
jbaums

জেএসএনের (যেমন এক্সএমএল প্যাকেজের জন্য রয়েছে) রূপান্তরিত টোডাটা ফ্রেম ফাংশনের মতো কিছু আছে কি?
ব্যবহারকারী জেটি

16

যদি ইউআরএলটি https হয়, যেমন অ্যামাজন এস 3 এর জন্য ব্যবহৃত হয়, তবে get URL ব্যবহার করুন

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

11
পিএসএ: গ্যুআরএলআল্লাহ রিকারেল প্যাকাকেজে রয়েছে।
মার্ক ম্যাকডোনাল্ড

1
এছাড়াও,Error in function (type, msg, asError = TRUE) : Protocol "s3" not supported or disabled in libcurl
d8aninja

3

প্রথমে আরজেএসনিও এবং রুকল প্যাকেজ ইনস্টল করুন:

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

কনসোলে আরজেএসনিও ব্যবহার করে কোডের নীচে চেষ্টা করুন

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)


2

প্যাকেজ:

  • লাইব্রেরী (httr)
  • লাইব্রেরী (jsonlite)

আমার কাছে জসনকে ডেটাফ্রেমে / সিএসভিতে রূপান্তর করার সমস্যা হয়েছে। আমার ক্ষেত্রে আমি করেছি:

Token <- "245432532532"
source <- "http://......."
header_type <- "applcation/json"
full_token <- paste0("Bearer ", Token)
response <- GET(n_source, add_headers(Authorization = full_token, Accept = h_type), timeout(120), verbose())
text_json <- content(response, type = 'text', encoding = "UTF-8")
jfile <- fromJSON(text_json)
df <- as.data.frame(jfile)

তারপরে ডিএফ থেকে সিএসভি পর্যন্ত।

এই বিন্যাসে এটি যদি প্রয়োজন হয় তবে একাধিক .csvs এ রূপান্তর করা সহজ হওয়া উচিত।

গুরুত্বপূর্ণ অংশটি বিষয়বস্তু ফাংশন থাকা উচিত type = 'text'


1

httr প্যাকেজ আমদানি করুন

library(httr)

Url পান

url <- "http://www.omdbapi.com/?apikey=72bc447a&t=Annie+Hall&y=&plot=short&r=json"
resp <- GET(url)

পাঠ্য হিসাবে শ্রদ্ধার সামগ্রী মুদ্রণ করুন

content(resp, as = "text")

শ্রদ্ধার বিষয়বস্তু মুদ্রণ করুন

content(resp)

শ্রদ্ধার বিষয়বস্তু পেতে সামগ্রী () ব্যবহার করুন তবে এবার দ্বিতীয় যুক্তি নির্দিষ্ট করবেন না। আর স্বয়ংক্রিয়ভাবে পরিসংখ্যান করে নিন যে আপনি কোনও জেএসওএন নিয়ে কাজ করছেন এবং জাসনকে একটি নামী আর তালিকায় রূপান্তর করেছেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.