[R] JSON data in data frame

David Winsemius dwinsemius at comcast.net
Sat Jan 14 20:05:15 CET 2017


> On Jan 14, 2017, at 9:27 AM, William Dunlap via R-help <r-help at r-project.org> wrote:
> 
> This is a question concerning the interface between the TIBCO products
> Spotfire and TERR so most people on this mailing list won't have a
> clue.  You will have better luck with TIBCO support or asking in the
> Q&A section of https://community.tibco.com.
> 
> It does sound like you might have a data.frame nested within a
> data.frame on the R/TERR side and Spotfire cannot deal with such a
> structure - its data table columns must be simple vectors.  Try
> unpacking the columns of the inner data frame and putting them one by
> one into the outer one.
> 
> (I cannot say for sure because that URL gives me a 502 error.)
> 
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com

The R as.dataframe includes that embeded dataframe as:

                                 list.weather
1           620, Snow, light shower snow, 13n
2 520, Rain, light intensity shower rain, 09n
3               800, Clear, Sky is Clear, 01n


An R solution for extraction might be:

 do.call(rbind, d1$list$weather)
#---------
   id  main                 description icon
1 620  Snow           light shower snow  13n
2 520  Rain light intensity shower rain  09n
3 800 Clear                Sky is Clear  01n


cbind( as.data.frame( d1$list[ !names(d1$list) %in% "weather"]), do.call(rbind, d1$list$weather) )
#----------
  coord.lon coord.lat sys.type sys.id sys.message sys.country sys.sunrise
1     37.62     55.75        1   7323      0.2075          RU  1484372967
2     30.52     50.43        1   7358      0.1982          UA  1484373141
3     -0.13     51.51        1   5091      0.2218          GB  1484380764
  sys.sunset main.temp main.pressure main.humidity main.temp_min main.temp_max
1 1484400490     -1.50          1009            80            -2            -1
2 1484403724      2.66           999            93             2             3
3 1484410813      2.46          1021            80             1             5
  visibility wind.speed wind.deg wind.var_beg wind.var_end all         dt      id
1       9000        6.0      150          120          190  90 1484416800  524901
2       9000        4.0      190           90          230  90 1484416800  703448
3      10000        5.1      280           NA           NA   0 1484418000 2643743
    name  id  main                 description icon
1 Moscow 620  Snow           light shower snow  13n
2   Kiev 520  Rain light intensity shower rain  09n
3 London 800 Clear                Sky is Clear  01n

-- 
David.

> 
> 
> On Sat, Jan 14, 2017 at 1:25 AM, Archit Soni <soni.archit1989 at gmail.com> wrote:
>> Hi Jermiah,
>> 
>> When i ran this code in Spotfire, my aim is to get output as a data table.
>> I am getting the same error:
>> 
>> TIBCO Enterprise Runtime for R returned an error: 'Error in
>> .cleanDataForExport(value, output.name) : Output data 'tab$coord' has
>> illegal type: 'data.frame''.
>> 
>> 
>> Code that I used:
>> 
>> library(jsonlite)
>> 
>> dat<- fromJSON('
>> http://api.openweathermap.org/data/2.5/group?id=524901,703448,2643743&units=metric&appid=ec0313a918fa729d4372555ada5fb1f8
>> ')
>> 
>> 
>> tab <- dat$list
>> 
>> tab is my output variable that will give me results in table format.
>> 
>> Could you please suggest what we can do to resolve this error.
>> 
>> Many Thanks,
>> Archit
>> 
>> On Fri, Jan 13, 2017 at 11:23 PM, jeremiah rounds <roundsjeremiah at gmail.com>
>> wrote:
>> 
>>> I TAd a course in R computing and the first thing I told students was
>>> "inspect. inspect. inspect."
>>> d1 <- fromJSON('http://api.openweathermap.org/data/2.5/
>>> group?id=524901,703448,2643743&units=metric&appid=
>>> ec0313a918fa729d4372555ada5fb1f8')
>>> names(d1)
>>> str(d1)
>>> d1
>>> d1$list
>>> your_data = d1$list
>>> 
>>> On Fri, Jan 13, 2017 at 1:12 AM, Archit Soni <soni.archit1989 at gmail.com>
>>> wrote:
>>> 
>>>> Hi All,
>>>> 
>>>> Warm greetings, I am stuck at an issue to convert incoming json response
>>>> to
>>>> data frame.
>>>> 
>>>> I am using below code to get the data
>>>> 
>>>> library(jsonlite)
>>>> d1 <- fromJSON('
>>>> http://api.openweathermap.org/data/2.5/group?id=524901,70344
>>>> 8,2643743&units=metric&appid=ec0313a918fa729d4372555ada5fb1f8
>>>> ')
>>>> 
>>>> d2 <- as.data.frame(d1)
>>>> 
>>>> typeof(d2)
>>>> list
>>>> 
>>>> can you please guide me how can i get this data into pure data.frame
>>>> format. The list in d1 has nested data.frame objects.
>>>> 
>>>> Note: If you are unable to get data from api then can use below json
>>>> string
>>>> to test it out:
>>>> 
>>>> JSON: {"cnt":3,"list":[{"coord":{"lon":37.62,"lat":55.75},"sys":{"
>>>> type":1,"id":7323,"message":0.193,"country":"RU","sunrise":
>>>> 1484286631,"sunset":1484313983},"weather":[{"id":600,"main":
>>>> "Snow","description":"light
>>>> snow","icon":"13d"}],"main":{"temp":-3.75,"pressure":1005,"h
>>>> umidity":86,"temp_min":-4,"temp_max":-3},"visibility":8000,"
>>>> wind":{"speed":4,"deg":170},"clouds":{"all":90},"dt":148429
>>>> 0800,"id":524901,"name":"Moscow"},{"coord":{"lon":30.52
>>>> ,"lat":50.43},"sys":{"type":1,"id":7358,"message":0.1885,"co
>>>> untry":"UA","sunrise":1484286787,"sunset":1484317236},"
>>>> weather":[{"id":804,"main":"Clouds","description":"overcast
>>>> clouds","icon":"04d"}],"main":{"temp":-2,"pressure":1009,"hu
>>>> midity":92,"temp_min":-2,"temp_max":-2},"visibility":9000,"
>>>> wind":{"speed":4,"deg":250,"var_beg":210,"var_end":270},"
>>>> clouds":{"all":90},"dt":1484290800,"id":703448,"name":"Kiev"
>>>> },{"coord":{"lon":-0.13,"lat":51.51},"sys":{"type":1,"id":
>>>> 5187,"message":0.1973,"country":"GB","sunrise":1484294413,"
>>>> sunset":1484324321},"weather":[{"id":802,"main":"Clouds","de
>>>> scription":"scattered
>>>> clouds","icon":"03n"}],"main":{"temp":0.7,"pressure":1002,"t
>>>> emp_min":0,"temp_max":2,"humidity":98},"visibility":10000,"
>>>> wind":{"speed":6.2,"deg":270},"clouds":{"all":40},"dt":
>>>> 1484290200,"id":2643743,"name":"London"}]}
>>>> 
>>>> Any help is appreciated.
>>>> 
>>>> --
>>>> Regards
>>>> Archit
>>>> 
>>>>        [[alternative HTML version deleted]]
>>>> 
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide http://www.R-project.org/posti
>>>> ng-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>> 
>>> 
>>> 
>> 
>> 
>> --
>> Regards
>> Archit
>> 
>>        [[alternative HTML version deleted]]
>> 
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list