R语言学习(1)R语言安装(WINDOWS)与数据结构和简单实战

2015-10-26 08:54:09

本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议

笔者因为要学习数据分析,数据量化,所以需要掌握很多科学计算的语言,本以为python已经足矣,但是发现最近在 toibe 编程语言排行榜上面有一个语言排名上升很快,就是 R语言了,所有想搞数据的朋友应该都听过他,但会的人不算太多,犹记当日 pycon大会,上面的人问有谁会R语言时没几个人举手,但是问谁听过时,大家都把手举了起来,感觉又是一个和hadoop类似的东西。

R语言简单介绍


pic

首先,R语言是一个由统计学家创造的语言,它自诞生就是奔着数据处理去的,它包含丰富的函数库,以及第三方包,能够胜任读取多种格式的文件(csv,xlm,sql数据库等等),能够做大量的统计计算(计算方差,平均值等等),最棒的是它可以绘制各种各样的统计图(饼状图,散点图,条形图等等),以下是选择他的理由(摘自 《R语言实战》):

  • 多数商业软件价格不菲,投入成千上万美元都是可能的。而R语言是免费的!如果你是一位老师或一名学生,好处显而易见

  • R是一个全面的统计研究平台,提供了各式各样的数据分析技术。几乎任何类型的数据分析工作皆可在在R中完成

  • R拥有顶尖的水准的制图功能。如果希望复杂数据可视化,那么R拥有最全面且强大的一系列可用功能

  • R是一个可进行交互式数据分析和探索的强大平台。其核心设计理念就是支持各种分析方法。举例来说,任意一个分析步骤的结果均可被轻松保存、操作、并作为i进一步分析的输入

  • 从多个数据源获取并将数据转化为可用的形式,可能是一个富有挑战的议题。R可以轻松地从各种类型数据源导入数据,包括文本文件、数据库管理系统、统计软件、乃至专门的数据仓库。它同样可以将数据输入并写入到这些系统中

  • R是一个无与伦比的平台,在其上面可使用一种简单而直接的方式编写心得统计方法。它易于扩展,并未快速编程实现新方法提供了一套十分自然的语言

  • R囊括了在其他软件中尚不可用的、先进的统计计算例程。事实上,新方法的更新速度是以周来计算的。如果你是一位 SAS 用户,想像一下每隔几天就获得一个新sas过程的情景

  • 如果你不想学习一门新语言,有各式各样的 GUI(graphical user interface,图形用户界面)工具通过菜单和对话框提供了与R语言同等的功能

  • R可运行在多种平台之上,包括windows,unix,mac os x。这基本上意味着它可运行在你所拥有的任何计算机上。

你可以使用R语言绘制这样的图形哦

pic

这样的

pic

甚至这样的:

pic

怎么样?是不是很帅!所以赶快学习R语言把!!!

在window上面安装R语言


首先,从R语言的这个网址上面得到源 https://www.r-project.org

但是,笔者帮学好了一个清华TUNA的一个下载源:

http://mirrors.tuna.tsinghua.edu.cn/CRAN/

在这里点击 Download R 3.2.2 for Windows

pic

下载后点击,进入安装页面:

pic

然后的话就是各种下一步啦~

pic

下一步,记得选好他的安装路径,以及他的存储路径

pic

接着,完成安装:

pic

接着,这样你就可以看见你的快捷方式里面多出了个这个

pic

点击,我就可以看到我们的R语言编辑页面啦~~并且我们可以看到我的R语言的版本是 3.2.2

pic

好的,我们来输入

a<-"hello world!"

就可以看见:

pic

好的!!我们的R语言编程之路就开始了!!

R语言数据结构与编程简介


首先R语言的代码实质上是一系列 表达式,表达式由对象和函数组成,R语言是一种面向对象语言,即是说你所操作的东西都是对象,这点和另一个很有趣的编程语言 ruby很像,万物皆对象,不过,如你是初学者,对这些东西就不用现在急着理解

赋值

R语言中的赋值和别的语言很不一样,别的语言,通常的语句为 变量名 = 量,但是R语言却是 变量名 <- 量,R语言中通过使用 <-来进行赋值,例如,我们输入:

> a<-5
> a
[1] 5

这样,我们便把 5这个值赋给了 x

R语言中只有最高层的赋值才会用 =来,比如某些函数填写参数时。

好,接下来我们来看看基本的R语言里面的数据结构:

向量(vector)

向量是用于存储数据型,字符型或逻辑型数据的一维数组。有些类似 python中的 list,使用时,使用 c() (c是combine的缩写,即是用来合并东西的函数)来使用:

> name_list<-c("aljun","invictus","salamer")
> name_list
[1] "aljun"    "invictus" "salamer" 
> age_list<-c(19,20,18)
> age_list
[1] 19 20 18
> handsome_or_not<-c(TRUE,TRUE,TRUE)
> handsome_or_not
[1] TRUE TRUE TRUE

这里注意,R语言中的 的 bool值(用来做判断的值)为 TRUEFALSE

矩阵(matrix)


矩阵是一个二维数组,但都拥有相同的结构(数值型,字符型,逻辑性),使用 matrix函数来创建矩阵,他的格式:

new_matrix<-matrix(vector,nrow=number_of_rows,ncol=number_of_columns,byrow=logical_value,dimnames=list(char_vector_rownames,char_vector_colnames))

这里面,vector表示矩阵的元素,nrowncol用以指定行和列的维数, dimnames包含了可选的,以字符型向量表示的行名和列名。选项 byrow表面矩阵应当按行填充( byrow=TRUE)还是按列填充(byrow=FALSE),默认情况下按列填充(注意,这里的部分参数有默认值,创建时,并不需要全部给参数)

> student<-matrix(1:10,nrow=5,ncol=2)
> student
     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10
> ele<-c(25,44,79,63)
> rnames<-c("r1","r2")
> cnames<-c("c1","c2")
> data<-matrix(ele,nrow=2,ncol=2,byrow=TRUE,dimnames=list(rnames,cnames))
> data
   c1 c2
r1 25 44
r2 79 63

这里的 1:10是一种简便写法,表示 从 1一直到 10的数字

数组(array)

数组和矩阵相似,但维度可以大于2,通常使用 array()函数创建:

new_array<-array(vector,dimensions,dimnames)

这里面 vector包含数组的元素, dimensions是一个数值型向量,控制各个维度下标的最大值, dimnames表示维度的名称标签

> ele1<-c("aa","bb")
> ele2<-c("cc","dd","ee")
> ele3<-c("ff","gg","hh","ii")
> new_array<-array(1:24,c(2,3,4),dimnames=list(ele1,ele2,ele3))
> new_array
, , ff

   cc dd ee
aa  1  3  5
bb  2  4  6

, , gg

   cc dd ee
aa  7  9 11
bb  8 10 12

, , hh

   cc dd ee
aa 13 15 17
bb 14 16 18

, , ii

   cc dd ee
aa 19 21 23
bb 20 22 24

列表(list)

列表是每个元素都有名字的向量,有点像ruby中的 哈希,但是又远不一样,这里用 $来调用他的各个值,使用 list()来创建:

new_list<-list(obj1,obj2)

这里的obj1,2表示各个量。

> aljun<-list(name="aljun",age=19,subject="chem",job="coder")
> aljun$name
[1] "aljun"
> aljun$age
[1] 19
> aljun$subject
[1] "chem"
> aljun$job
[1] "coder"

数据框(data frame)

这个应该是所有数据分析里面用的最多的数据结构了,他的使用感觉就是在用excel或者sql型数据库的表一样,且调用时和 列表一样,用 $就可以,使用 data.frame()来创建:

new_frame<-data.frame(col1,col2,col3````)

这里的 col可以为任何形式的值

> student_id<-c(2,4,5)
> student_names<-c("aljun","salamer","invictus")
> student_subject<-("chem","math","CS")
> student_data<-data.frame(student_id,student_names,student_subject)
> student_data
  student_id student_names student_subject
1          2         aljun            chem
2          4       salamer            math
3          5      invictus              CS
> student_data$student_subject
[1] chem math CS  
Levels: chem CS math
> student_data$student_names
[1] aljun    salamer  invictus
Levels: aljun invictus salamer

是不是感觉这个感觉就是 数据框在手,天下我有!!,感觉就是在操作一个表一样

好了,R语言的基本数据结构就这么多了

实战:从EXCEL里面读取数据后制图


首先,我们得有一份 excel 文件,这个就是我们的excel文件了:

pic

然后把它保存为 csv格式,因为R语言天生对这种格式支持好,直接 ` xls ·其实也是可以的,就是会折腾一下

pic

好的,在R语言中输入:

> our_data<-read.csv("C:\\Users\\Aljun\\Desktop\\our_data.csv")
> our_data
      name age height
1    aljun  12    185
2 invictus  40    180
3  salamer  20    181

这里使用了一个内置的函数 read.csv,这个函数接受一个文件路径的参数,然后把数据换成 数据框的格式,这样我们就使用 R语言读取了excel的数据了

然后输入:

> plot(our_data$age,our_data$height)

我们就可以得到一张散点图,R语言就是这么简单,就是这样几句话:

pic

这里的 plot是R语言的绘图苦力函数之一,调用很简单,只要给他参数就可以绘制一幅散点图,其他参数,我们以后再说

最后,我来推荐一下R语言的书吧:

R语言实战

R和Ruby数据分析之旅

R语言 返回首页

Designed and built with all the love in the world by the Mr.ALJUN.

@SERVER BY NGINX AND POWER BY DIGITALOCEAN.

© COPYRIGHT BY GAGASALAMER 2015