从JSON文件导入数据到R中

11 浏览
0 Comments

从JSON文件导入数据到R中

有没有办法将JSON文件中的数据导入到R中?更具体地说,该文件是一个包含字符串字段、对象和数组的JSON对象数组。RJSON包在处理这个问题上并不是很清晰。http://cran.r-project.org/web/packages/rjson/rjson.pdf

0
0 Comments

导入JSON文件到R中的问题主要是在使用RJSONIO包时,对嵌套列表的转换存在一些困难。解决方法是使用lapply函数来转换嵌套列表,并使用do.call函数将转换后的列表合并为矩阵。

具体的解决方法如下:

# 导入RJSONIO包
library(RJSONIO)
# 从JSON文件中读取数据
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}]')
# 使用lapply函数转换嵌套列表
m <- lapply(
    l[[1]]$votes, 
    function(x) c(x$user['name'], x$user['user_id'], x['ts'])
)
# 使用do.call函数将转换后的列表合并为矩阵
m <- do.call(rbind, m)

上述代码可以从示例中的数据中获取关于投票的信息。需要注意的是,代码中的`x$user$name`和`x$user$user_id`应该改为`x$user['name']`和`x$user['user_id']`。另外,使用`m <- do.call(rbind, m)`可能是将列表转换为矩阵的更好方法。

在R中是否有类似于XML包中的convertToDataFrame函数的JSON转换函数呢?

0
0 Comments

问题的出现原因是需要从一个JSON文件中将数据导入到R中进行处理。解决方法是使用jsonlite库将JSON文件导入为一个数据框,并可以选择展开嵌套对象。嵌套数组将被导入为数据框。

以下是解决方法的代码示例:

library(jsonlite)
winners <- fromJSON("winners.json", flatten=TRUE)
colnames(winners)
winners[,c("winner","startPrice","lastVote.user.name")]
winners[,c("votes")]

使用数据框而不是列表进行过滤结果处理会更加简单方便。

0
0 Comments

问题的出现原因是需要将一个JSON文件中的数据导入到R中进行分析和处理。解决方法是先安装rjson包,然后使用fromJSON函数将JSON文件中的数据导入到R中。

首先,需要安装rjson包,可以使用以下命令进行安装:

install.packages("rjson")

安装完成后,使用以下命令导入rjson包:

library("rjson")

接下来,将JSON文件的URL保存到一个变量中:

json_file <- "http://api.worldbank.org/country?per_page=10®ion=OED&lendingtype=LNX&format=json"

然后,使用readLines函数读取JSON文件的内容,并使用paste函数将内容合并为一个字符串。最后,使用fromJSON函数将字符串解析为R中的数据:

json_data <- fromJSON(paste(readLines(json_file), collapse=""))

如果使用的是rjson版本0.2.1以上,可以直接使用file参数将JSON文件导入:

json_data <- fromJSON(file=json_file)

需要注意的是,这个更新是指rjson包的更新,并不是指R语言的更新。更新后,上述代码的最后一行会有所改变,但导入rjson包的方法仍然保持不变。

通过以上方法,就可以将JSON文件中的数据成功导入到R中进行后续的分析和处理了。

0