R语言学习由浅入深路线图_数据分析师考试
现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言。
对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑到论坛上吼一嗓子,然后欣然or悲伤的离去,一直到遇到下一个问题再回来。当然,这不是最好的学习方式,最好的方式是——看书。目前,市面上介绍R语言的书籍很多,中文英文都有。那么,众多书籍中,一个生手应该从哪一本着手呢?入门之后如何才能把自己练就成某个方面的高手呢?相信这是很多人心中的疑问。有这种疑问的人有福了,因为笔者将根据自己的经历总结一下R语言书籍的学习路线图以使Ruser少走些弯路。
本文分为6个部分,分别介绍初级入门,高级入门,绘图与可视化,计量经济学,时间序列分析,金融等。
1.初级入门
《An Introduction to R》,这是官方的入门小册子。其有中文版,由丁国徽翻译,译名为《R导论》。《R4Beginners》,这本小册子有中文版应该叫《R入门》。除此之外,还可以去读刘思喆的《153分钟学会R》。这本书收集了R初学者提问频率最高的153个问题。为什么叫153分钟呢?因为最初作者写了153个问题,阅读一个问题花费1分钟时间,全局下来也就是153分钟了。有了这些基础之后,要去读一些经典书籍比较全面的入门书籍,比如《统计建模与R软件》,国外还有《R Cookbook》和《R in action》,本人没有看过,因此不便评论。
最后推荐,《R in a Nutshell》。对,“果壳里面的R”!当然,是开玩笑的,in a Nutshell是俚语,意思大致是“简单的说”。目前,我们正在翻译这本书的中文版,大概明年三月份交稿!这本书很不错,大家可以从现在开始期待,并广而告知一下!
2.高级入门
读了上述书籍之后,你就可以去高级入门阶段了。这时候要读的书有两本很经典的。《Statistics with R》和《The R book》。之所以说这两本书高级,是因为这两本书已经不再限于R基础了,而是结合了数据分析的各种常见方法来写就的,比较系统的介绍了R在线性回归、方差分析、多元统计、R绘图、时间序列分析、数据挖掘等各方面的内容,看完之后你会发现,哇,原来R能做的事情这么多,而且做起来是那么简洁。读到这里已经差不多了,剩下的估计就是你要专门攻读的某个方面内容了。下面大致说一说。
3.绘图与可视化
亚里斯多德说,“较其他感觉而言,人类更喜欢观看”。因此,绘图和可视化得到很多人的关注和重视。那么,如何学习R画图和数据可视化呢?再简单些,如何画直方图?如何往直方图上添加密度曲线呢?我想读完下面这几本书你就大致会明白了。
首先,画图入门可以读《R Graphics》,个人认为这本是比较经典的,全面介绍了R中绘图系统。该书对应的有一个网站,google之就可以了。更深入的可以读《Lattice:Multivariate Data Visualization with R》。上面这些都是比较普通的。当然,有比较文艺和优雅的——ggplot2系统,看《ggplot2:Elegant Graphics for Data Analysis》。还有数据挖掘方面的书:《Data Mining with Rattle and R》,主要是用Rattle软件,个人比较喜欢Rattle!当然,Rattle不是最好的,Rweka也很棒!再有就是交互图形的书了,著名的交互系统是ggobi,这个我已经喜欢两年多了,关于ggobi的书有《Interactive and Dynamic Graphics for Data Analysis With R and GGobi》,不过,也只是适宜入门,更多更全面的还是去ggobi的主页吧,上面有各种资料以及包的更新信息!
特别推荐一下,中文版绘图书籍有谢益辉的《现代统计图形》。
4.计量经济学
关于计量经济学,首先推荐一本很薄的小册子:《Econometrics In R》,做入门用。然后,是《Applied Econometrics with R》,该书对应的R包是AER,可以安装之后配合使用,效果甚佳。计量经济学中很大一部分是关于时间序列分析的,这一块内容在下面的地方说。
5.时间序列分析
时间序列书籍的书籍分两类,一种是比较普适的书籍,典型的代表是:《Time Series Analysis and Its Applications :with R examples》。该书介绍了各种时间序列分析的经典方法及实现各种经典方法的R代码,该书有中文版。如果不想买的话,建议去作者主页直接下载,英文版其实读起来很简单。时间序列分析中有一大块儿是关于金融时间序列分析的。这方面比较流行的书有两本《Analysis of financial time series》,这本书的最初是用的S-plus代码,不过新版已经以R代码为主了。这本书适合有时间序列分析基础和金融基础的人来看,因为书中关于时间序列分析的理论以及各种金融知识讲解的不是特别清楚,将极值理论计算VaR的部分就比较难看懂。另外一个比较有意思的是Rmetrics推出的《TimeSeriesFAQ》,这本书是金融时间序列入门的东西,讲的很基础,但是很难懂。对应的中文版有《金融时间序列分析常见问题集》,当然,目前还没有发出来。经济领域的时间序列有一种特殊的情况叫协整,很多人很关注这方面的理论,关心这个的可以看《Analysis of Integrated and Cointegrated Time Series with R》。最后,比较高级的一本书是关于小波分析的,看《Wavelet Methods in Statistics with R》。附加一点,关于时间序列聚类的书籍目前比较少见,是一个处女地,有志之士可以开垦之!
6.金融
金融的领域很广泛,如果是大金融的话,保险也要被纳入此间。用R做金融更多地需要掌握的是金融知识,只会数据分析技术意义寥寥。我觉得这些书对于懂金融、不同数据分析技术的人比较有用,只懂数据分析技术而不动金融知识的人看起来肯定如雾里看花,甚至有人会觉得金融分析比较低级。这方面比较经典的书籍有:《Advanced Topics in Analysis of Economic and Financial Data Using R》以及《Modelling Financial Time Series With S-plus》。金融产品定价之类的常常要用到随机微分方程,有一本叫《Simulation Inference Stochastic Differential Equations:with R examples》的书是关于这方面的内容的,有实例,内容还算详实!此外,是风险度量与管理类。比较经典的有《Simulation Techniques in Financial Risk Management》、《Modern Actuarial Risk Theory Using R》和《Quantitative Risk Management:Concepts, Techniques and Tools》。投资组合分析类和期权定价类可以分别看《Portfolio Optimization with R》和《Option Pricing and Estimation of Financial Models with R》。
7.数据挖掘
这方面的书不多,只有《Data Mining with R:learing with case studies》。不过,R中数据挖掘方面的包已经足够多了,参考包中的帮助文档就足够了。
以上是小编为大家分享的关于R语言学习由浅入深路线图的相关内容,更多信息可以关注环球青藤分享更多干货
这是我以前给别人的答案,希望能够帮到你。首先R是一种专业性很强的统计语言,如果想学得快一些的话,基本的统计学知识要懂,不然很多东西会掌握的比较慢。
掌握基本语法和操作,推荐国内的已经翻译的比如《R语言实战》《R语言编程艺术》,这个过程中最好结合一些小例子来做一些分析的东西。其他还有《R语言实例》《R语言核心技术手册》也都是很好的书!如果需要可视化的话,强烈不推荐学习R本身的作图系统,实在是太不友好了.....还是用ggplot2吧。
掌握了上面的,就可以深入一些了,如果是做数据分析和可视化,推荐《ggplot2:数据分析与图形艺术》,这个才是作图的神器啊.....如果是空间分析相关的,推荐《Applied Spatial Data Analysis with R》,这个如果可以的话看英文版,而且要有地学的一些知识背景,中文版翻译的太次了,尽量不要看。数据挖掘机器学习之类的,可以看看比如《数据挖掘与R语言》、《机器学习——实用案例解析》,不过我觉得这几本书没上面的那几本好,但是可以大概看看是咋回事,最好还是看看专门的相关书籍,熟悉各种算法和流程,到时候搜索R的package,照着文档和例子搞定,不是特别难。
最后,强烈推荐统计之都、R-bloggers,统计之都以及谢益辉、肖凯、刘思喆等人的博客(自行Google以及到上面的网站找链接),订阅一下,会很有帮助,RStudio是个很棒的IDE,用起来很爽,功能很强大。
总之,你可以从《R语言实战》开始出发吧!
R语言快速入门:数据结构+生成数据+数据引用+读取外部数据查看完整文档可至百度网盘:
链接: https://pan.baidu.com/s/1cEdmpO5idfxx044TpqVBuA
提取码: bi3t
R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。常被用于统计学、计量分析等领域。接下来讲一下我个人认为的R入门知识。
目录1 数据结构
1.1 向量
1.2 矩阵
1.3 数据框
2 生成数据
2.1 c() 连接单个数据
2.2 ":" 生成1/-1等差向量
2.3 seq() 生成等距向量
2.4 rep() 生成重复数据
3 数据引用
3.1 引用行/引用列
3.2 引用单个元素
3.3 引用子矩阵
3.4 变量名引用
4 读取外部数据(表)
4.1 更改工作目录
4.2 read.table
4.3 read.csv
正文 1 数据结构本节主要讲向量、矩阵、数据框三种数据结构(入门必须学)
1.1 向量
用于存储数值型、字符型或逻辑型数据的一维数组,常用"c()"创建。例如:
> c(1,2,8)#生成包含1,2,8的一维数组(向量)[1] 1 2 8
1.2 矩阵
二维数组具有行列的概念
#矩阵用法
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL) #表示生成1行,1列的一个矩阵,其中仅仅包含一个元素“NA” #---示例---#> matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE, dimnames = list(c("row1", "row2"), c("C.1", "C.2", "C.3")))
C.1 C.2 C.3
row1 1 2 3
row2 11 12 13
#nrow = 2和ncol = 3 定义2x3的2行3列矩阵
#byrow = TRUE 是控制矩阵中的数据c(1,2,3, 11,12,13)按照行的顺序排列,默认按照列排列
#dimnames = list(c("row1", "row2"), c("C.1", "C.2", "C.3")) 定义矩阵行名和列名
1.3 数据框
主要用于向量/矩阵合并,可以将不通类型的以向量以及矩阵,按照一定结构存储在数据框中。
> x <- c(11:20) #其中" <- "是赋值的意思,将向量c(11:20)赋值给对象x> y <- c(1:10)
> data.frame(xf = x, yf = x) #将向量x和y合并存储到数据框中,并重命名为xf和yf
xf yf
1 11 11
2 12 12
3 13 13
4 14 14
5 15 15
6 16 16
7 17 17
8 18 18
9 19 19
10 20 20
数组与矩阵类似,但其维度大于2.由于R入门基本接触不到3维以上数组的概念,目前暂不展开,等入门后在反过来看。
2 生成数据本节主要讲“c()”、":"、seq、rep等四种数据生成的内容(入门必须学)
2.1 “c” 连接单个数据
> c(1,2,8)#生成包含1,2,8的向量2.2 “:“ 生成1/-1等差向量
> 1.1:10[1] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1
> 1:10
[1] 1 2 3 4 5 6 7 8 9 10
> 10:1 #如x=1:10(递减,如y=10:1)
[1] 10 9 8 7 6 5 4 3 2 1
2.3 seq 生成等距向量
①seq(起点,终点,步长)
②seq(length=9, from=1, to=5)
> seq(1,10,2)[1] 1 3 5 7 9
> seq(length=5,1,10)
[1] 1.00 3.25 5.50 7.75 10.00
#seq(x)相当于1:length(x);length(x)为0时,返回integer(0)
> seq(10)
[1] 1 2 3 4 5 6 7 8 9 10
> seq(c())
integer(0)
2.4 rep(x,n) 重复
将x重复n次,可使用each限定为依次重复形式
rep(1:3,3)rep(1:3,each=3)
#> rep(1:3,3)
#[1] 1 2 3 1 2 3 1 2 3
#> rep(1:3,each = 3)
#[1] 1 1 1 2 2 2 3 3 3
额外补充:R语言|第2讲:生成数据
3 数据引用(以矩阵为例)数据引用必须懂“对指定维度数据的引用”(以二维矩阵为例)
3.1 行引用/列引用
例如:引用第一行数据,引用第一列数据,引用第一行第一列的数据。
> data(iris) #鸢尾花数据集> dim(iris) #读取iris数据集的维度数值,以“行数 列数 ”形式展示[1] 150 5 #说明iris数据集是150 x 5的二维数组3.2 行列值引用:数据集[行值,列值]
如行值或列值仅1个数字,表示仅引用该行或列的数据
> iris[1,] #引用第1行数据Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
> head(iris[,1],5) #引用第1列的数据,其中因数据过长,使用head()函数取前5个数字
[1] 5.1 4.9 4.7 4.6 5.0
3.3 引用子矩阵
如行值或列值为组合数据,则表示引用组合行列交叉位置的数据
> iris[1:5,1:3]Sepal.Length Sepal.Width Petal.Length
1 5.1 3.5 1.4
2 4.9 3.0 1.4
3 4.7 3.2 1.3
4 4.6 3.1 1.5
5 5.0 3.6 1.4
3.4 变量名引用
(多用于二维数组中):数据集$变量名
> head(iris$Petal.Length,5)[1] 1.4 1.4 1.3 1.5 1.4 4 读取外部数据(以.csv表为例)
本节主要讲如何读取外部数据(表)(以.csv表为例)
4.1 设置工作目录
R语言中数据的输入需要设置数据读取的路径,一般将数据文件放到工作目录下,这样直接就可以通过read.table等读取数据文档(不许要设置路径)。
setwd("E:/") #设置当前工作目录为"E:/"
getwd() #读取当前工作空间的工作目录(文件读取保存路径)
> getwd() #读取当前工作空间的工作目录(文件读取保存路径)[1] "C:/Users/ysl/Documents"
> setwd("E:/") #设置当前工作目录为"E:/"
> getwd() #再次使用getwd()函数即可查看是否设置成功
[1] "E:/"
方法二:通过R-gui菜单栏设置(文件-改变工作目录)
4.2 read.table()
#读取带分隔符的文本文件。read.table()函数是R最基本函数之一,读取带分隔符的文本/表格文件。#Usage
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
read.csv(file, header = TRUE, sep = ",", quote = "\"",
dec = ".", fill = TRUE, comment.char = "", ...)
read.csv2(file, header = TRUE, sep = "", quote = "\"",
dec = ",", fill = TRUE, comment.char = "", ...)
read.delim(file, header = TRUE, sep = "\t", quote = "\"",
dec = ".", fill = TRUE, comment.char = "", ...)
read.delim2(file, header = TRUE, sep = "\t", quote = "\"",
dec = ",", fill = TRUE, comment.char = "", ...)
常用参数的说明如下:
(1)file:file是一个带分隔符的ASCII文本文件。①绝对路径或者相对路径。一定要注意,在R语言中\是转义符,所以路径分隔符需要写成"\\"或者“/”。所以写成“C:\\myfile\\myfile.txt”或者“C:/myfile/myfile.txt”即可。②使用file.choose(),弹出对话框,自动选择文件位置。例如:read.table(file.choose(),...)。
(2)header:一个表示文件是否在第一行包含了变量的逻辑型变量。如果header设置为TRUE,则要求第一行要比数据列的数量少一列。
(3)sep分开数据的分隔符。默认sep=""。read.table()函数可以将1个或多个空格、tab制表符、换行符或回车符作为分隔符。常见空白分隔符有:空格,制表符,换行符
sep=” ”;sep = “\t”;sep = “\n”
(4)stringsAsFactors 逻辑值,标记字符向量是否需要转化为因子,默认是TRUE。stringsAsFactors = F意味着,“在读入数据时,遇到字符串之后,不将其转换为factors,仍然保留为字符串格式”。
(5)encoding 设定输入字符串的编码方式。
#读取txt文档
> df<- read.table("data.txt")> df
V1 V2
1 x y
2 1 2
3 3 4
4 5 6
> df <- read.table("data.txt",header = T)
> df
x y
1 1 2
2 3 4
3 5 6
#样式1:直接读取数据
> df <- read.table("data.csv") #直接读取数据> head(df)
V1
1 ID,Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Species
2 1,5.1,3.5,1.4,0.2,setosa
3 2,4.9,3,1.4,0.2,setosa
4 3,4.7,3.2,1.3,0.2,setosa
5 4,4.6,3.1,1.5,0.2,setosa
6 5,5,3.6,1.4,0.2,setosa
#样式2:读数+首行表头
> df <- read.table("data.csv",header = T) #读数+首行表头> head(df)
ID.Sepal.Length.Sepal.Width.Petal.Length.Petal.Width.Species
1 1,5.1,3.5,1.4,0.2,setosa
2 2,4.9,3,1.4,0.2,setosa
3 3,4.7,3.2,1.3,0.2,setosa
4 4,4.6,3.1,1.5,0.2,setosa
5 5,5,3.6,1.4,0.2,setosa
6 6,5.4,3.9,1.7,0.4,setosa
#样式3:读数+首行表头+","逗号分割
> df <- read.table("data.csv",header = T,sep=",")#读数+首行表头+","逗号分割
> head(df)
ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 1 5.1 3.5 1.4 0.2 setosa
2 2 4.9 3.0 1.4 0.2 setosa
3 3 4.7 3.2 1.3 0.2 setosa
4 4 4.6 3.1 1.5 0.2 setosa
5 5 5.0 3.6 1.4 0.2 setosa
6 6 5.4 3.9 1.7 0.4 setosa
> summary(df)
ID Sepal.Length Sepal.Width Petal.Length
Min. : 1.00 Min. :4.300 Min. :2.000 Min. :1.000
1st Qu.: 38.25 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600
Median : 75.50 Median :5.800 Median :3.000 Median :4.350
Mean : 75.50 Mean :5.843 Mean :3.057 Mean :3.758
3rd Qu.:112.75 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100
Max. :150.00 Max. :7.900 Max. :4.400 Max. :6.900
Petal.Width Species
Min. :0.100 setosa :50
1st Qu.:0.300 versicolor:50
Median :1.300 virginica :50
Mean :1.199
3rd Qu.:1.800
Max. :2.500
#样式4:读数+首行表头+","逗号分割+字符转因子factor
> df <- read.table("data.csv",header = T,sep=",",stringsAsFactor = T)##读数+首行表头+","逗号分割+字符转因子factor
> head(df)
ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 1 5.1 3.5 1.4 0.2 setosa
2 2 4.9 3.0 1.4 0.2 setosa
3 3 4.7 3.2 1.3 0.2 setosa
4 4 4.6 3.1 1.5 0.2 setosa
5 5 5.0 3.6 1.4 0.2 setosa
6 6 5.4 3.9 1.7 0.4 setosa
#请注意species结果与样式3中结果的差异
> summary(df)
ID Sepal.Length Sepal.Width Petal.Length
Min. : 1.00 Min. :4.300 Min. :2.000 Min. :1.000
1st Qu.: 38.25 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600
Median : 75.50 Median :5.800 Median :3.000 Median :4.350
Mean : 75.50 Mean :5.843 Mean :3.057 Mean :3.758
3rd Qu.:112.75 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100
Max. :150.00 Max. :7.900 Max. :4.400 Max. :6.900
Petal.Width Species
Min. :0.100 setosa :50
1st Qu.:0.300 versicolor:50
Median :1.300 virginica :50
Mean :1.199
3rd Qu.:1.800
Max. :2.500
4.3 read.csv()
#读取.csv格式数据,read.table的一种特定应用。read.csv() 读取逗号分割数据文件,read.table()的一种特定应用。默认逗号分割,header=T,stringsAsFactor = Tdf <- read.csv("data.csv") #等价与下df <- read.table("data.csv",header = T,sep=",",stringsAsFactor = T)df <- read.table("data.csv",header = T,sep=",",stringsAsFactor = T)#第一行和第二行等价
read.csv(file, header = TRUE, sep = ",", quote = "\"",
dec = ".", fill = TRUE, comment.char = "", ...)
#实例
> df <- read.csv("data.csv")
#相当于df <- read.table("data.csv",header = T,sep=",",stringsAsFactor = T)
> head(df)
ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 1 5.1 3.5 1.4 0.2 setosa
2 2 4.9 3.0 1.4 0.2 setosa
3 3 4.7 3.2 1.3 0.2 setosa
4 4 4.6 3.1 1.5 0.2 setosa
5 5 5.0 3.6 1.4 0.2 setosa
6 6 5.4 3.9 1.7 0.4 setosa