R语言学习笔记之——数据处理神器data.table

2020-06-16 00:00:00 索引 数据 函数 迁移 数据处理

数据处理在数据分析流程中的地位相信大家都有目共睹,也是每一个数据从业者面临的为繁重的工作任务。

在实际应用场景下,虽然SQL(SQL类专业的etl语言)是数据处理的明星语言,性能佳、效率高、容易培养数据思维,但是SQL没法处理构建全流程的数据任务,之后仍然需要借助其他数据分析工具来对接更为深入的分析任务。

R语言作为专业的统计计算语言,数据处理是其一大特色功能,事实上每一个处理任务在R语言中都有着不止一套解决方案(这通常也是初学者在入门R语言时,感觉内容太多无从下手的原因),当然这些不同方案确实存在着性能和效率的绝大差异。

合理选择一套自己的数据处理工具组合算是挺艰难的选择,因为这个涉及到使用习惯和迁移成本的问题,比如你先熟知了R语言的基础绘图系统,在没有强大的驱动力的情况下,你可能不太愿意画大把时间去研究ggplot2,你用会写for/while循环,就不太愿意去掌握apply组函数,甚至那些性能逆天的并行算运算包;刚开始会用基础字符串处理,看到stringr包就面临着技能工具更新的问题……

太多的选择,让人眼花缭乱,我自己也遇到过这种困惑,为了避免注意力分散,我的做法是先做可能性罗列——罗列一个可以实现同类功能的所有工具清单并做一套功能卡(也算是初步了解)。然后根据自己掌握的现状选择熟练的一套,随着时间的推移慢慢发现现有工具组合的不足,开始尝试往更加高效、简介的工具迁移,这样以需求为推动力的技能升级和迁移更为彻底和明确。

典型的几个技能组合迁移如下:

基础字符串处理函数——stringr
绘图系统:plot——ggplot2
代码风格:函数嵌套——管道函数(`%>%`)
列表处理:list(自建循环)——rlist
json处理:Rjson+RJSONIO——jsonlite
数据抓取:RCurl+XML——httr+xml2
循环任务:for/while——apply——plyr::a_ply——并行运算(foreach、parallel)
切片索引:subset——dplyr::select+filter
聚合运算:aggregate——plyr::ddply+mutate——dplyr::group_by+summarize
数据联结:merge——plyr::join——dplyr::left/right/inner/outer_join
数据塑型:plyr::melt/dcast——tidyr::gather/spread

相关文章