|
1. 大家觉得R语言难学吗?困扰你的主要是什么?
首先,关于R语言是否难学,我想这个问题要因人而异。众所周知,R语言是因统计而诞生,是一款优秀的统计计算与统计制图的软件,所以统计专业和数学专业的人学习R语言就具有得天独厚的优势,因为他们更懂得软件背后的理论,学起来可以更加有的放矢。R语言最大的优点是:它是由统计学家发明创造的,最大的缺点也是:它是由统计学家发明创造的。R语言的编程风格独特,采用向量式的编程风格,与其他流行语言(C/C++/Java)有很大差异,所以即便是一个资深的Java语言工程师,学习R语言也会很不适应,写出的R语言代码也会具有浓浓的Java风格。R语言非常灵活小巧,有时候Java里面需要100+行代码才能解决的问题,R语言2~3行代码就搞定了。
R语言最被人所称道的是:它有大量的扩展包可被调用。这一点既是R语言的魅力之处,也是包括我在内的R语言学习者(特别是初学者)比较困惑的地方。各种R语言包层出不穷,我该选用哪个包?特别是所遇到的问题无法在大众包里面找到答案时。
接触R语言一段时间之后,我最深的一点体会是:R语言是一把玩转数据的大杀器,但是要掌握它并不太容易,除了掌握R语言的独特语法和编程习惯,更为重要的是,要理解掌握你所用的各种R语言包、函数背后的统计和数学原理,如果仅仅只是依葫芦画瓢,并不是真正意义上掌握了R语言,唯有掌握其踪源,才能做到:杀器在手,指哪打哪!
2. R可以实现数据分析中的哪些工作?
R语言本就是为捣腾数据而生,因此,数据分析中的所有工作均可以在R语言里面完成。具体说来,主要有:
① 数据获取。
数据分析的第一步当然是要有数据,R语言不仅可以读取手头现有的数据(如csv/txt/excel文件数据);还可以读取其他统计分析软件中存储的数据(如sas/spss/stata软件的数据格式);更能与各种数据库接口连接,直接从数据库中读取数据,比如从mysql、hadoop等。
② 数据的预处理。
也就是数据的清洗、转换等ETL工作。包括对缺失值的处理:删除or填充,R语言中均有现成的函数可以实现。还有,如果现有的数据指标不能满足分析目标,就需要衍生构建新指标了,这在R中也是能快速方便地实现的。
③ 数据的探索。
这一阶段的工作主要是充分认识你获得的数据,包括了解每个变量指标的类型(数值or字符),这决定了你后面可采用的分析模型。了解每个指标变量的值的分布情况,你可以用R语言计算其概要统计量或者做简单的直方图观察。确认是否具有异常值存在,如果有,评估其对整体数据的影响,以便决定是删除异常值还是保留异常值。观察你感兴趣的某个变量之间的相关关系,可以用R语言做散点图,计算相关系数来观察。
④ 数据的分析。
当你对数据有了充分的认识之后,你就可以对你所感兴趣的分析主题进行分析了。这个阶段你可能会尝试用到各种统计模型,这刚好是R语言所擅长的。
⑤ 结果的展现。
当你通过对数据的分析,得到了有价值的结论,就需要通过强有力的方式展现出来了。俗话说,一图胜千言,绘图恰好是R语言的强项,有些你以前未曾见过的高逼格图像,R语言都能做出来。通过丰富的包装,你的数据分析报告才能吸引住老板的眼球,不被当成垃圾扔掉。
3. 你曾经使用或编写过R软件包吗?
曾经使用过的R语言包还是挺多的,有:
① ggplot2包。一种基于图形语法的高效作图包,各种高端大气上档次的图形都可以调用这个包画出来。
② knitr包。实现了“文学化编程、自动化报告”的理念,让你与枯燥的复制粘贴say goodbye!代码与报告浑然天成!
③ shinny包。一种实现可交互式作图的包。参数调节可交互,逼格好高!连ppt都免了,直接用这个包来代替。
④ tm包。一种文本挖掘的包,有过探索,但好像对中文文本挖掘支持不够。
⑤ rpart包。一种实现决策树算法的包。
……
目前还没有尝试自己编写R包,感觉水平暂时还不够,以后争取自己捣腾一个R包出来,为R社区的发展壮大添砖加瓦。
4. 说说您读完试读样章后的启发
大概花了一个小时的时间读完了方老师的样章,说说我的感受吧。
① 从样章可以感受出来,这本书是比较偏应用、案例的一本书,书中没有特别复杂的公式,很多背景原理的交代都是以通俗的文字描述,而且描述得简洁清晰。当然,如果没有接触过相关的统计原理,想深入了解的需要自己补相关的知识了。
② 行文非常有层次感,逻辑清晰。样章首先介绍了用R语言产生各种一元随机数的案例,然后介绍了用R语言产生各种多元随机数的案例,这一点我认为是比较有收获的,因为以前用R产生的随机数基本都是一元的,多元的以前还没有见过,读罢算是长见识了。
③ 关于一些R函数的用法,有一些以前没用过,记录一下,算是积累吧。
par(mfrow=c(1,3)) #作图布局设置
curve(dunif(x,0,1),add=T,col="red") #添加均匀分布密度函数线
acf(x)#画自相关系数图
points(xvals,dbinom(xvals,n,p),type="h",lwd=3) #在图上画点
as.vector(outer(1:6,1:6,paste)) #向量元素间组合
|
|