从r中获取数据集(json格式)的信息

时间:2015-05-06 21:50:38

标签: json r mongodb

我从mongodb集合创建了一个数据表。此数据表中的数据采用JSON格式,但我无法从中提取信息..

  

{ “地点”:{ “bounding_box”:{            “类型”:“多边形”,            “坐标”:               [                  [                     -119.932568,                     36.648905                  ]                  [                     -119.632419,                     36.648905                  ]               ]            ]         }}}

我需要坐标的前两个值:lat = 36.648905和lon = -119.932568

但似乎无法提取该信息:

<class 'psycopg2.extras.DictRow'>
Traceback (most recent call last):
  File "rtk_film_nos.py", line 231, in <module>
    main()
  File "rtk_film_nos.py", line 150, in main
    title['name'] = foo
TypeError: list indices must be integers, not str

我尝试了很少的组合,但我总是得到NULL。 谢谢你的帮助......

- 编辑 - 包括我如何连接数据库并从中创建数据帧的代码..

my_lon <- myBigDF$place.bounding_box.coordinates[1[1[1]]]

1 个答案:

答案 0 :(得分:0)

很难准确地告诉你如何从JSON字符串转到R对象。有不同的库以不同的方式解析事物。如果我假设使用&#34; rjson&#34;,那么你会有类似

的东西
x <- rjson::fromJSON('{"place":{"bounding_box":{ "type":"Polygon", "coordinates":[ [ [ -119.932568, 36.648905 ], [ -119.632419, 36.648905 ] ] ] }}}')

因为你的数据似乎有过多的方括号,所以事情有点乱。您可以使用

进入坐标部分
x$place$bounding_box$coordinates
# [1]]
# [[1]][[1]]
# [1] -119.9326   36.6489
# 
# [[1]][[2]]
# [1] -119.6324   36.6489

这是矢量列表的列表。要制作一个很好的纬度/经度坐标矩阵,你可以做

do.call(rbind, x$place$bounding_box$coordinates[[1]])