R语言解析JSON格式数据文件
来源:互联网 发布:淘宝一元秒杀怎么抢购 编辑:程序博客网 时间:2024/05/17 06:53
由于分析的数据格式为JSON格式,既占空间,而且分析时也非常的不方便,所以,我们需要对JSON格式
的数据进行解析,使其符合R语言分析所需要的数据格式,如data.frame,list等。
在R语言的包库中,已经有人对JSON格式的解析做了完整的包jsonlite,这极大地减轻了分析人员的工作压力。
jsonlite包中有以下几个函数
1、flatten
其中flatten函数是用来处理JSON中含有内嵌表格的情况,这种JSON文件解析为data.frame时,会在data.frame中
的某一列或多个列中另外包含一个data.frame。flatten函数可以将这种data.frame转换为一个2维的列表结构。通俗
点讲,就是讲内嵌表格的属性作为外置大表格的属性,组成一个维数变大了的表格。例如
上图的x表格,stats为一个内嵌表格,具有3个属性。
经过flatten(x)函数转化后,变为一个表格
2、prettify,minify
prettify是一个美化函数,对json密集的json格式,通过增加空白,对格式进行标准化,这样我们在观察json数据时会比较方便。
例如:
minify是一个压缩函数,与prettify做的事情正好相反,其效果如下
这两个函数使用都非常简单,仅需要一个JSON对象即可,可以从toJSON函数获得
3、rbind.pages
这是一个合并函数,根据官方文档的说法,它可以将多个data.frame合并为1个data.frame。
这个函数非常只能,可以自动识别多个data.frame的属性是否相同,若相同,则按行合并,若不同,则将相同的地方按行合并,不同的属性按列合并
例如:
x <- data.frame(foo = rnorm(3), bar = c(TRUE, FALSE, TRUE))
y <- data.frame(foo = rnorm(2), bar = c("blue", "red"))
rbind.pages(list(x, y))
直接按行合并了。
x <- data.frame(foo = rnorm(3), bar = c(TRUE, FALSE, TRUE))
y <- data.frame(foo = rnorm(2), col = c("blue", "red"))
rbind.pages(list(x, y))
对foo按行合并了,而col属性是按照列合并的,没有的部分用NA代替。
4、serializeJSON
将一个R的对象序列化为一个JSON数据集。
5、stream_in,stream_out
利用流文件来处理JSON格式的数据解析任务。这种方法可以针对数据量非常大的情况。
stream_in(con, handler, pagesize = 500, verbose = TRUE, ...)
其中con为一个连接对象,可以是一个网络ur,也可以是一个文件路径
handler是一个自定义函数,pagesize用来指定我们从文件中要读取的文件行数。
verbose=T,设置是否打印出处理行数
stream_out(x, con = stdout(), pagesize = 500, verbose = TRUE, ...)
x为一个需要输出为json数据集的对象,目前只支持data.frame
5、toJSON,fromJSON
与stream_in和stream_out的功能类似,toJSON是转化为JSON格式,fromJSON是将JSON格式数据集转化为
R中的格式,一般为list.
具体使用方法可以查帮助文档。
其中fromJSON在读取多行JSON数据时会报错,只能单行读取数据。
总结
进行JSON格式数据解析时,没有特殊要求,建议使用stream_in函数。如果希望按照自己的想法来解析,可以使用fromJSON
按行解析,然后对字符串按照自己的想法处理,如加密,解密等。
- R语言解析JSON格式数据文件
- R语言-json数据文件的批量读取
- R语言- 批量导入excel的xlsx格式数据文件
- R语言 | 数据文件读写
- R语言数据文件读写
- R语言数据文件读写
- 解析XML格式数据文件
- Json解析 Json数据文件 例子
- R语言读取外部数据文件
- R语言数据文件的读写
- hbase数据文件格式(HFile)解析
- MP3格式音频数据文件解析
- Android中数据文件解析(Json解析)
- Android中数据文件解析(Json解析)
- Android中数据文件解析(Json解析)
- R语言自带的数据文件
- R语言JSON转换
- go语言json格式解析与生成示例
- 在Eclipse中使用JUnit4进行单元测试(中级篇)
- HDU - 2604 Queuing 矩阵快速幂
- MYSQL数据库的备份与恢复
- 单链表总结篇
- 【LeetCode】Course Schedule 解题报告
- R语言解析JSON格式数据文件
- Doxygen代码注释规定和生产文档说明
- linux中生成内核模块时部分函数undefined的应对方法
- 文章标题 多列布局基础
- 属性动画一
- 黑马程序员----Java中的构造代码块
- SNMPv3基于用户的安全模型USM(2)
- 第三方平台接收公众号粉丝的消息
- 圣斗士星矢的政治阴谋论