dplyr:这个包里有下面5个函数可以有效的执行数据处理的大部分任务,
select:用于选取一列或者多列
filter:用于选取特定条件下的某些行
arrange:用于实现数据一列或多列的升降排序
mutate:用于在数据集中添加列
summarise:用于数据汇总
data.table:提供了一个非常简洁的通用格式DT[I,j,by],可以理解为,对于数据集DT,选取子集行i,通过by分组计算j。
ggplot2:不用说,画图神器
reshape2:变形,整合
stringr:处理字符串
lubridate:处理时间
RODBC:链接数据库
plyr:拆分,合并,重组。
knitr:谢益辉,自动化报告包
ggmap:ggplot2+map的一个包,主要用来画地图,但是ggplot2的功能也都有
animation:谢益辉,动画包
formatR:谢益辉,整理代码的包
googleVis:利用google的API,可以生成动态气泡图之类,炫
data.table:大的数据,用它取子集等,不怎么会。
sqldf:在R中,像写sql语句一样对数据框做操作
LARS: 变量选择
glmnet:也是变量选择的,只不是过广义线性模型的
rpart:分类树
e1071:支持向量机
MASS:经典的统计方法,包括各种估计和检验方法
psych做多元统计,
plm对panel data建模,
rugarch对波动率建模,
BLCOP做black-litterman模型,
MICE插补确实值
=== 数据基础操作 ===
reshape2 横向、纵向做数据变换,例如把纵向堆叠在数据库中的证券行情数据转换成一个按照不同证券代码横向排列,按照时间纵向排列收盘价的数据表
stringr 方便地用正则表达式做批量字符串操作,可做检测、匹配、替换、计数等等
lubridate 方便地做日期/时间操作,各种标准化时间和时区的处理
plyr 轻松地在vector, list, data.frame之间做分组变换,实现拆分、变换、合并的操作
dplyr 轻松地处理data.frame, data.table以及多种数据库为基础的数据,实现选择、变换、分组等等,速度很快
RODBC 连接ODBC数据库接口
RSQLite 连接轻量级SQLite数据库连接
jsonlite 读写json文件
yaml 读写yaml文件,实现灵活的程序外部配置
Rcpp, Rcpp11 写C++03/11代码直接编译后给R调用,大幅提升算法性能
data.table 快速处理较大数据表
ggplot2 高级绘图,一套统一的语法实现复杂图像组合绘制
zoo 时间序列数据的预处理,比如滚动平均等等
rmarkdown 用Markdown写文档并可方便地运行R代码与绘图
knitr 自动文档生成
devtools 扩展包开发必备,在线安装托管的扩展包,检查扩展包是否符合CRAN标准等等testthat 扩展包自动测试
pipeR 自己写的高性能、低损耗、分工明确的管道操作(pipeline operator)扩展包,使得数据变换流程化
=== 专业领域(数值计算) ===
rootSolve 非线性方程求根、ODE均衡状态解
Rsolnp 非线性优化
=== 专业领域(计量和统计学习) ===
sde 随机微分方程模拟和统计推断
KernSmooth 非参数平滑与分布估计
cpm Change Point Detection 实时分布或者统计关系变化检测
stats4 可用来方便地做MLE估计
rmarkdown+knitr+ggplot2等,写静态文档;
rmakdown+shiny+rcharts等,交互式展示工具;
reshape2+dplyr+data.table等,快速数据处理(重塑、聚合);
randomforest+caret+e1071+HMM等,常见机器学习算法;
caret: 数据挖掘
1. 数据处理加工:tidyverse。严格来说,tidyverse是一系列包的组合,其中最核心是dplyr、tidyr和magrittr。利用这些工具,可以便利地对数据进行变换、加工。尤其是结合magrittr的管道操作,逻辑清晰。效率虽不及data.table,但考虑到逻辑上的优势,个人通常更偏好这一组工具。
2. 静态数据可视化:ggplot2/plotly/highcharter/recharts/REmap。ggplot2也是hadley男神的作品,是R最常用的绘图工具。男神出品的好处是质量有保证,自由度高。但与此相伴的是,参数太多,都需要自己设置,新手用默认参数画出来的图往往很丑。随后,在此基础上,不少人开发了一些对ggplot2的拓展包,可以很容易地查到。而后面几个都是R对几个主流互联网可视化工具的接口,其中都包含了至少在某方面更强大的可视化效果。其中,plotly还可以一个命令把ggplot2对象转化为plotly对象。highcharter提供了highcharts工具的接口,个人有时会拿来画k线图。recharts提供了百度著名的echarts的接口,但使用也有点复杂。而REmap则提供了一个echarts的简化接口,专注于画地图和热力图。
3. 动态可视化:shiny家族。由于在现在的公司里,负责基础研发工作,因此常常需要开发完底层模型后,在提供一个原型给IT,进行最终产品的开发。最早都是通过文字描述或者ppt里拼图来描述,后来开始用原型图软件,直到发现shiny,整个世界都不一样了。开发完底层模型,顺手shiny写个原型,然后丢给IT,自己试一下各种功能,照着做就行了。bingo,对我这种懒人来说,简直不要太舒服!
4. rmarkdown/knitr:对于我这个极其厌恶用word一遍一遍调文档格式的人来说,markdown和rmarkdown简直就是天大的福音。markdown的优势是语法简单,大概5分钟就可以上手。再结合rmarkdown,可以方便地生成自己需要的各种格式的文档,诸如html、word、pdf,以及beamer幻灯片。特别地,近期1.0版之后的RStudio还推出了notebook,可以直接把代码转化为文档。再者,在谢大大的推动下,去年推出的bookdown包,可支持用rmarkdown来写gitbook!我自己也进行过这方面的尝试。
5. 字符串处理相关:stringr和stringi。这方面涉及不是太多,也相对简单,不多说。
6. 统计相关:forecast是一个大招。还有不少机器学习相关的包。特别值得一提的是psych,用于主成分和因子分析。
7. 此外,作为一个金融狗,R自带的部分金融相关的包也很常用,尤其是quantmod和PerformanceAnalytics。前者用于生成k线图/交易信号图,后者用于策略的绩效评估。
常用包:
——数据处理:lubridata ,plyr ,reshape2,stringr,formatR,mcmc;
——机器学习:nnet,rpart,tree,party,lars,boost,e1071,BayesTree,gafit,arules;
——可视化包:ggplot2,lattice,googleVis;
——地图包:ggmap,RgoogleMaps,rworldmap;
金融包:
——时间序列:zoo,xts,chorn,its,timeDate;
——金融分析:quantmod,RQuantLib,portfolio,PerformanceAnalytics,TTR,sde,YieldCurve;
——风险管理:parma,evd,evdbayes,evir,extRemes,ismev;
数据挖掘包:
——聚类:
——基于划分的方法: kmeans, pam, pamk, clara ;
——基于层次的方法: hclust, pvclust, agnes, diana
——基于模型的方法: mclust
——基于密度的方法: dbscan
——基于画图的方法: plotcluster, plot.hclust
——基于验证的方法: cluster.stats
——文本挖掘:tm
——分类:
——策树: rpart, ctree
——随机森林: cforest, randomForest
——回归, Logistic, Poisson,glm,
predict, residuals
——生存分析: survfit, survdiff, coxph
——统计
——常用的包: Base R, nlme
——方差分析: aov, anova
——密度分析: density
——假设检验: t.test, prop.test,
anova, aov
——线性混合模型:lme
——主成分分析和因子分析:princomp
——优化
——最简单的:stat包中的optimize, optim 函数
——非线性优化:BB包
——线性不等式约束的非线性优化:constrOptim,adaptive barrier 算法
——非线性box约束优化:nlminb
——带约束的非线性优化:Rsolnp包中solnp函数,alabama包中的constrOptim.nl()函数
——线性规划:lpSolve 包 中的lp函数,linprog包中的 solveLP函数
——中文分词包
——Rwordseq 中文分词包
聚类:
常用的包: fpc,cluster,pvclust,mclust
基于划分的方法: kmeans, pam, pamk, clara
基于层次的方法: hclust, pvclust, agnes, diana
基于模型的方法: mclust
基于密度的方法: dbscan
基于画图的方法: plotcluster, plot.hclust
基于验证的方法: cluster.stats
分类:
常用的包: rpart,party,randomForest,rpartOrdinal,tree,marginTree,maptree,survival
决策树: rpart, ctree
随机森林: cforest, randomForest
回归, Logistic回归, Poisson回归: glm, predict, residuals
生存分析: survfit, survdiff, coxph
关联规则:
常用的包: arules:支持挖掘频繁项集,最大频繁项集,频繁闭项目集和关联规则
DRM:回归和分类数据的重复关联模型
APRIORI算法,广度RST算法:apriori, drm ECLAT算法: 采用等价类,RST深度搜索和集合的交集: eclat
序列模式:
常用的包: arulesSequences
SPADE算法: cSPADE
时间序列:
常用的包: timsac
时间序列构建函数: ts
成分分解: decomp, decompose, stl, tsr
统计:
常用的包: Base R, nlme
方差分析: aov, anova
密度分析: density
假设检验: t.test, prop.test, anova, aov
线性混合模型:lme
主成分分析和因子分析:princomp
图表:
条形图: barplot 饼图: pie 散点图: dotchart 直方图: hist 密度图: densityplot 蜡烛图, 箱形图 boxplot QQ (quantile-quantile) 图: qqnorm, qqplot, qqline Bi-variate plot: coplot
树: rpart Parallel coordinates: parallel, paracoor, parcoord
热图, contour: contour, filled.contour
其他图: stripplot, sunflowerplot, interaction.plot, matplot, fourfoldplot,assocplot, mosaicplot
保存的图表格式: pdf, postscript, win.metafile, jpeg, bmp, png