基础入门
摘要:讲解R的操作知识,了解R的特点、资源获取方式,并掌握基本的程序编写
什么是R
R语言是一种业界盛行的数据分析编程语言
理念就是快速、准确地把想法转化成软件
R语言脱胎于1980年左右诞生的S语言
在1998年被美国计算机协会(ACM)授予了“软件系统奖”
1997年R语言正式成为GNU项目
2010年获得第一届“统计计算及图形奖”(美国统计协会)
R语言的特点
开源和免费
功能强大且扩展性强
与其他软件的交互能力强
各类前沿的数据分析建模方法
实现可重复性(Reproducible)分析
适用于多操作系统的轻量化平台
编程简单
更新快速且文档完备
R的整合能力
数据:可连接数据库,如Oracle、MySQL
运算:可调用C或Fortran函数进行底层运算
应用:可作为运算引擎嵌入到Java开发的系统中(Rserve)
网络:R与web整合部署(Rook、shiny)
R的弱点
解释型语言
数据全部读入内存
单线程
改进效能的方法
善用R的语法
升级硬件
使用64位系统
租用云计算(EC2)
compile预编译
调用C或Fortran
并行计算、MapReduce、RHadoop
和其他软件的对比
SPSS、SAS、Stata
图形用户界面,无需写代码
局限于已有算法
不适合可重复分析
Matlab
数值运算能力强
通常用于命令行交互
商业软件不利于整合其他软件
Python(NumPy/SciPy)
功能全面,自由度高
要求很强的能力
工具只是数据工作的一部分,根据自身能力和需求来选择
R可以做什么?
统计计算与绘图(学术界)
金融分析
生命科学
互联网数据挖掘
社会化网络分析和可视化
task views
哪些公司在使用R
如何学习R
R语言官方网站
R-blogger
R语言期刊
R语言搜索引擎
R函数在线帮助
关于R的问答网站
统计之都
中国R语言会议
美国计算机世界杂志提供的R语言初学者入门资料
如何得到帮助,相关资源和书籍
初学入门:
《R in Acion》
《The Art of R Programming》
统计进阶:
《A Handbook of Statistical Analysis_Using_R》
《Modern Application Statistics With S》
科学计算:
《Introduction to Scientific Programming and Simulation Using R》
数据挖掘:
《Data Mining with R:Learning with Case Studies》
《An Introduction to Statistical Learning》
RStudio,扩展包,工作空间
R的官方网站;
RStudio开发环境;
扩展包的安装和加载;
install.packages("ggplot2")
library(ggplot2)
如何得到帮助
help.start()打开帮助文档首页
help("foo")或?foo查看函数foo的帮助(引号可以省略)
help.search("foo")或?foo以foo为关键词搜索本地帮助文档函数foo的使用示例(引号可以省略)
example(“foo”)函数foo的使用示例(引号可以省略)
RSiteSearch(“foo”)以foo为关键词搜索在线文档和邮件列表存档
apropos("foo",mode="function")列出名称中含有foo的所有可用函数
data()列出当前加载包中所含的所有可用示例数据集
vignette()列出当前已安装包中所有可用的vignette文档
vignette(“foo”)为主题foo显示指定的vignette文档
工作目录和工作空间
运行R代码的方式
数据对象
向量化操作
向量之间除了四则运算外,还可以进行比较;
函数和控制语句
(1)在R语言中,所有的操作和运算都是由函数来完成的,和数学中的函数类似,大多数的函数都是由函数名和参数这两项组成的,例如下面计算指数的例子,“exp”是函数名,括号中的1则是参数:
exp(1)
exp(c(1,2,3,4))
(2)R语言中可以将各种变量赋值为一个变量,这种赋值操作就是等号“=”,也可以使用“<-”,下面的例子就是先将变量x赋值为一个向量,然后求取其对数。
x<-c(1,2,3,4)
log(x)
(3)如果我们想从变量x中取出一个元素的话,可以使用方括号加索引号,下面取出第二个元素:
x[2]
x[2:4]
x[-4]
x[x>2]
(4)数组
数组(Array)是一种多维的向量,建立数组的方法如下:
a<-array(1:12,dim=c(3,4))
print(a)
a[2,2]
a[2,]
(5)数据框
数据框(Data Frame)是一种类似于Excel表格的数据结构,其中每列的数据类型可以不同,但数据长度必须一致,数据框非常适合用来进行数据分析,它的每一列可以代表数据的每个变量或属性,每一行可以代表一个样本,下面我们来构建一个有三个属性,五个样本的数据框。
city <- c('beijing','shnaghai','guangzhou','shengzhen','hangzhou')
age <- c(23,11,34,42,67)
gender <- c('F','M','F','F','M')
people <- data.frame(city,age,gender)
print(people)
和数组操作一样,我们可以用方括号来提取数据框中的元素,另一种方法是用‘$’符号来提取某一列,例如提取age变量和gender变量。
people[1,1]
people[1,2:3]
people[1,]
people[2,-2]
people[2,-(2:3)]
people[2,c(1,3)]
people[2,-c(1,3)]
people$age
people$gender
people$age>30
people$city[people$age>30]
(4)列表
列表(List)是最为灵活的数据结构,它的不同元素可以是不同类型,也可以是不同的长度,还是用age、city、gender三个向量来构建列表。
peoplelist <- list(age=age,city=city,gender=gender)
print(peoplelist)
people.list$array <- a
people.list$dataframe <- people
(5)对象和类
有一个非常有用的函数“str()”能用以了解一个对象底细。
str(people)
(6)模型与公式
对统计学家来讲,模型是用以描述数据的简洁方式,很多时候模型以公式的形式展现,用以预测或解释。
y~x1+x2+...+xn
下面我们用一个具体的线性回归例子来看一下,使用的数据集是R内置的数据car。R语言中用于回归的函数是“lm”,回归后的结果存入变量“model”中。
model <- lm(formula=dist ~ speed,data=cars)
'summary'函数提供了关于回归结果更为丰富的信息,包括了各系数及其对应的P值,残差标准差和决定系数等。
summary(model)
(7)基本对象:向量
—单个数值(标量)是向量的一种特例
—向量的元素必须属于某种模式(mode),可以整型(integer)、数值型(numeric)、字符型(character)、逻辑型(logical)、复数型(complex)
—循环补齐(recycle):在一定情况下自动延长向量
—筛选:提取向量子集
—向量化:对向量的每一个元素应用函数
—使用seq()创建向量
—使用rep()重复向量常数
vector1 <- seq(2,10,2)
vector1 <- 1:10+2
vector2 <- 1:(10+2)
(8)算术运算小结
+ - * / ^
%%模运算
%/%整除除法
(9)逻辑运算小结
== <= >= & | ! T F
area = pi*r^2
area <- function(r) {
a = pi*r^2
return(a)
}