用RparsingJSON
我对R相当陌生,但越多使用它,越是看到它对SAS或SPSS的真正威力。 正如我所看到的,主要的好处之一就是能够从networking获取和分析数据。 我想这是可能的(甚至可能是直截了当的),但我正在寻找parsing网上公开可用的JSON数据。 我不是任何程序员,所以任何帮助和指导,你可以提供将不胜感激。 即使你把我指向一个基本的工作例子,我也许可以通过它。
来自Omegahat的RJSONIO是另一个提供以JSON格式读写数据的软件包。
rjson不使用S4 / S3方法,所以不容易扩展,但仍然有用。 不幸的是,它没有使用vector化的操作,所以对于非平凡的数据太慢了。 同样,为了将JSON数据读入R,它有点慢,所以不能扩展到大数据,如果这是一个问题。
更新 (新套餐2013-12-03):
jsonlite :这个包是RJSONIO
包的一个分支。 它build立在RJSONIO
的parsing器上,但在R对象和JSONstring之间实现了不同的映射。 这个包中的C代码大部分来自RJSONIO
包,R代码已经被重写了。 除了从fromJSON
和toJSON
fromJSON
replacefromJSON
,该包还具有序列化对象的function。 此外,该软件包包含大量的unit testing,以确保所有的边缘情况都被一致地编码和解码,以便与系统和应用程序中的dynamic数据一起使用。
jsonlite包很容易使用,并试图将json转换为数据框架。
例:
library(jsonlite) # url with some information about project in Andalussia url <- 'http://www.juntadeandalucia.es/export/drupaljda/ayudas.json' # read url and convert to data.frame document <- fromJSON(txt=url)
这是缺less的例子
library(rjson) url <- 'http://someurl/data.json' document <- fromJSON(file=url, method='C')
RJSONIO,rjson和jsonlite中的JSON()函数不会为复杂的嵌套json对象返回简单的2Ddataframe。
为了克服这个,你可以使用tidyjson 。 它需要一个JSON并且总是返回一个data.frame。 目前在CRAN中是不可用的,你可以在这里得到它: https : //github.com/sailthru/tidyjson
更新: tidyjson现在是可用的,你可以直接使用install.packages("tidyjson")
来安装它
为了logging,rjson和RJSONIO确实改变了文件types,但是它们本身并不真正parsing。 例如,我收到JSON格式的丑陋的MongoDB数据,用rjson或RJSONIO转换它,然后使用unlist和大量的手动修正来实际parsing成可用的matrix。
在控制台中使用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)