/ / R - json, r, सूची में सूची से डेटा निकालना

आर - जेसन, आर, सूची में सूची से डेटा निकालना

library(RCurl)
library(rjson)
json <- getURL("https://extraction.import.io/query/runtime/17d882b5-c118-4f27-8ce1-90085ec0b116?_apikey=d5a8a01e20174e95887dc0f385e4e3f6d7ef5ca1428d5a029f2aa352509948ade8e5d7fb0dc941f4769a32b541ca6b38a7cd6578dfd81b357fbc4f2e008f5154f1dbfcff31878798fa887b70b1ff59dd&url=http%3A%2F%2Fwww.numbeo.com%2Fcost-of-living%2Fcompare_cities.jsp%3Fcountry1%3DSingapore%26country2%3DAustralia%26city1%3DSingapore%26city2%3DMelbourne")
obj <- fromJSON(json)

मैं डेटा को डेटा के अच्छे कॉलम में लाना चाहता हूं, लेकिन सूची में कई चरण "नामहीन" हैं। डेटा को व्यवस्थित करने का कोई विचार?

उत्तर:

उत्तर № 1 के लिए 1

इस अंतर को देखें, और मुझे बताएं कि आप क्या सोचते हैं। यह आपकी वस्तु जैसा दिखता है:

library(RCurl)
library(rjson)
json <- getURL("https://extraction.import.io/query/runtime/17d882b5-c118-4f27-8ce1-90085ec0b116?_apikey=d5a8a01e20174e95887dc0f385e4e3f6d7ef5ca1428d5a029f2aa352509948ade8e5d7fb0dc941f4769a32b541ca6b38a7cd6578dfd81b357fbc4f2e008f5154f1dbfcff31878798fa887b70b1ff59dd&url=http%3A%2F%2Fwww.numbeo.com%2Fcost-of-living%2Fcompare_cities.jsp%3Fcountry1%3DSingapore%26country2%3DAustralia%26city1%3DSingapore%26city2%3DMelbourne")
obj <- rjson::fromJSON(json)
str(obj)

List of 2
$ extractorData:List of 3
..$ url       : chr "http://www.numbeo.com/cost-of-living/compare_cities.jsp?country1=Singapore&country2=Australia&city1=Singapore&city2=Melbourne"
..$ resourceId: chr "b1250747011ee774e7c881617c86a5a9"
..$ data      :List of 1
.. ..$ :List of 1
.. .. ..$ group:List of 52
.. .. .. ..$ :List of 6
.. .. .. .. ..$ COL VALUE        :List of 1
.. .. .. .. .. ..$ :List of 1
.. .. .. .. .. .. ..$ text: chr "Meal, Inexpensive Restaurant"

वास्तव में वहाँ के बीच में बहुत सारी सूची है कि आप "टी जरूरत नहीं है jsonlite पैकेज "रों fromJSON समारोह:

library(jsonlite)
obj2<- jsonlite::fromJSON(json)

List of 2
$ extractorData:List of 3
..$ url       : chr "http://www.numbeo.com/cost-of-living/compare_cities.jsp?country1=Singapore&country2=Australia&city1=Singapore&city2=Melbourne"
..$ resourceId: chr "b1250747011ee774e7c881617c86a5a9"
..$ data      :"data.frame":  1 obs. of  1 variable:
.. ..$ group:List of 1
.. .. ..$ :"data.frame":  52 obs. of  6 variables:
.. .. .. ..$ COL VALUE        :List of 52
.. .. .. .. ..$ :"data.frame":    1 obs. of  1 variable:
.. .. .. .. .. ..$ text: chr "Meal, Inexpensive Restaurant"
.. .. .. .. ..$ :"data.frame":    1 obs. of  1 variable:
.. .. .. .. .. ..$ text: chr "Meal for 2 People, Mid-range Restaurant, Three-course"
.. .. .. .. ..$ :"data.frame":    1 obs. of  1 variable:

फिर भी, यह JSON सिर्फ isn "t pretty, we" को इसे ठीक करने की आवश्यकता होगी। मुझे लगता है कि आप चाहते हैं कि वहाँ डेटा फ्रेम। तो शुरू करो

df <- obj2$extractorData$data$group[[1]]

और वहाँ आपके डेटा फ्रेम है। समस्या हालांकि: हर एक सेल यहाँ एक सूची में है। NULL मानों को शामिल करना, और आप "केवल उन को अनलिस्ट नहीं कर सकते, वे" गायब हो जाएंगे और जिन कॉलम में वे थे वे छोटे हो जाएंगे

संपादित करें: यहाँ कॉलम को कैसे संभालना है list(NULL) मान।

df[sapply(df[,2],is.null),2] <- NA
df[sapply(df[,3],is.null),3] <- NA
df[sapply(df[,4],is.null),4] <- NA
df[sapply(df[,5],is.null),5] <- NA
df2 <- sapply(df, unlist) %>% as.data.frame

यह सुनिश्चित करने के लिए और अधिक सुरुचिपूर्ण ढंग से लिखा जा सकता है, लेकिन यह आपको मिल जाएगा और यह समझ में आता है।