我就在这里,不离不弃
——A·May
R-83|T-110
json作为一种轻量级的数据存储形式,现如今的互联网上的通行度是非常之高,从而就并发出R与json的关系难题。
现在的我,学习R受到两种限制:一是对数据的爬取中,需要对css或者html语言有必要的了解,才能够在爬取数据包后对数据进行解析,得到数据框格式的文件。对此我没有特别好的办法,也没有充足的时间,只能在各大政府服务信息中心中下载csv和xlsx格式的文件进行相关的训练;二是就是对半结构化数据的了解,其实主要就是对于json数据的处理,如何才能有效的转化为可以使用的data.frame格式的文件呢?
我尝试用百度上能都搜到的两个主流包rjson和RJSONIO来解决这个问题,但必须着实感叹,现在的互联网越发不是万能的了。
为什么这么说呢?有两点原因:一是json作为轻量级的数据文件,从网页上爬取或者提供下载的json数据量太大,用R运行的话内存太小,太影响运行的速度;二是json作为半结构化的数据,其结构也不是固定的,比如下面这两种情况的json数据,在用R进行解释的时候还需要注意。
但是问题来了,我们在用?rjson时发现,对于rjson的介绍很少,对于RJSONIO的解释为零,这就很难了。
所以,在处理json数据的时候,如果R不能实现正常的转化,我们就需要曲线救国。下面我整理了几个思路,但必须要说明的是这些思路都不尽完美,存在诸多问题。
因为不完美,在这里有必要重视半结构化数据的处理与转化!!!
思路一:用R进行正常的操作,推荐用RJSON包,其中toJSON函数是将data.frame数据转为json数据,而fromJSON是读取json文件,并转为list格式。
library(RJSONIO)
data("iris")
#将iris 转化为json文件
iris_js
cat(iris_js)
#将iris_js 写到文件夹中
writeLines(iris_js,"D:/Rf/iris_js")
#读取json 文件
iris_js_d
str(iris_js_d)
iris_df
str(iris_df)
head(iris_df)
思路二:在线json转为excel数据,这里提供一个网址,可以做某一些json的格式转化。
http://j2e.kpoda.com.
思路三:学习rmongoDB包让R语言轻松连接非关系型数据库mongodb,处理json数据。这个思路并没有实践,但是查看其连接函数和使用方法与使用Mysql数据库的基本操作相类似。下面给出具体的操作内容在https://my.oschina.net/u/2306127/blog/473237中有,仅供参考。
在推荐rMongoDB的同时,我也找到一个关于mongodb操作的网址,推荐给大家,http://www.runoob.com/mongodb/mongodb-create-collection.html,扫一下二维码就可以进去看看先。
思路五:利用c语言、python或者Java解析json文件。
以上五种思路,思路三是最具有扩展性的,毕竟在学习SQL关系型数据后,如果再能掌握非关系型的数据,肯定是如虎添翼。其次,学习c语言就算了,现在学习Java和python的性价比可能是最高的。师出同门,选择R语言的我,现在感觉到选择python的小伙伴的压力,我也要更加努力了。
虽然没能很好的解决json问题,但是也梳理主要思路,在大数据时代,没有一种工具是独立存在,由实际问题延伸出的工具之间的关联性将已经成为影响专业技术型人才发展的首要因素,我们在多种工具中学习,但是请不要忘记专业性的含义,首先精通一种工具——R,集合数据挖掘与编程的语言。
我是May,在众多论文压力下,争分夺秒的May,明天见!
领取专属 10元无门槛券
私享最新 技术干货