banner
大数据平台>大数据技术与应用>R语言与非结构化数据

R语言与非结构化数据共舞

作者: afenxi来源: afenxi时间:2017-03-13 16:01:06

R语言与非结构化数据共舞-数据分析网

介绍

现代化数据科学中的 DataFrame 概念源起R语言,而 Python Pandas 和 Spark DateFrame 都是参考R设计的。不过在实际的网络数据通讯中,类似DateFrame这样的格式却并不是主流,真正主流的方式其实是JSON(JavaScript Online Notation),所以讨论如何处理非结构化数据就变得非常有意义了。加之,近年来 Redis、MongoDB、ELK等非结构化数据库的繁荣,MySQL 5.7之后也已经添加了对JSON格式的原生支持(之前可以用blob、longtext等格式存储),非结构化数据更是在数据处理中变得流行。

本文将从 非结构化数据的转化、处理以及可视化三个方面讨论如何在R中操作非结构化数据。

数据清洗:JSON、List、DataFrame的三国杀

R语言与非结构化数据共舞-数据分析网

DataFrame 是R中的结构化数据结构,List 是R中的非结构化数据。JSON、List、DataFrame三者之间的互相转化是数据科学中非常频繁的一类操作。

在R中有一个非常有意思的现象,那就是处理json时,我们有三个选择,jsonlite、rjson以及RJSONIO,三者各有特点,有时为了处理一些问题还必须得混合使用。在实际处理字符串中,一定要注意的就是R中字符串的转义问题。比如表示,"表示"等等。我曾经因为Python和R中的双层JSON解析多次遇到转义符号的问题。具体可以参看官方手册。

jsonlite

jsonlite 是我最常用的一个json处理包,因为jsonlite可以一步将 json 转成 dataframe 再 从dataframe 转到 json,在数据处理中可以轻松解决常见的 json转化问题。此外,jsonlite 还完美支持utf-8,在 json 字符串错误时会有明显的错误提示。

jsonlite 的劣势是当出现双层 json 时,jsonlite 会将json转成dataframe格式的 list,这直接导致我们在用 length() 或者 dim() 求内层 JSON 的维度会出现错误。

jsonlite::fromJSON(" runApp( list( ui = ui, server = server ) )

接着,在浏览器中的对应端口可以打开这个json编辑器应用。

尾注

除了JSON之外,和NoSQL数据库的交互在大数据时代也成为了主流,混合使用Redis、Hive、MongoDB等数据库也成了家常便饭,具体操作可以翻看张丹老师的R利剑NoSQL系列文章。

参考资料

A biased comparsion of JSON packages in R 任坤:跳出数据框,拥抱非结构化数据 rlist-tutorial jsonview GitHub

作者:Harry Zhu,擅长用Python和R进行数据建模、定量研究,目前就职于量子金服(Quantum Financial Service)。微信号:harryzhustudio

专栏:https://segmentfault.com/blog/harryprince,

GitHub地址:https://github.com/harryprince。

原创文章,作者:古思特,如若转载,请注明出处:《R语言与非结构化数据共舞》http://www.afenxi.com/post/10377

banner
看过还想看
可能还想看
最新文章
Yonghong Z-Suite一站式大数据分析平台 —— 以卓越的数据技术为客户创造价值,实现客户成功。