R语言第一课.docx
- 文档编号:23023298
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:18
- 大小:299.63KB
R语言第一课.docx
《R语言第一课.docx》由会员分享,可在线阅读,更多相关《R语言第一课.docx(18页珍藏版)》请在冰豆网上搜索。
R语言第一课
R语言
基础篇
简介:
R语言在英文里写成R或R-project,最开始的时候,国内将R语言翻译成R软件,后来觉得不妥,翻译成R语言或R或环境,R语言是S语言的一种实现。
S语言是国外学者开发的用来做数据探索、统计分析、作图的语言。
R软件是一套完整的数据处理、计算和制图软件。
用户可通过R软件的网站(_project.org)获得最新的R软件信息,并得到最新的应用统计软件包。
说R是统计软件,还不如说是数学计算软件,因为它提供了若干统计程序包,各种数学计算、统计计算函数,包含了很多程序包。
国外好多大学学生,学的统计工具都是R语言,而国内最早应用它的大学是清华大学,学生为了参加世界数学建模大赛,目前只有中国人大、广东暨南大学统计专业才有教授R语言课程,人大肖凯老师在网上讲授R语言课程目前比较畅销。
R语言是一种用于开源免费的用于数据分析的计算环境,是用于统计分析、绘图的语言和操作环境,是一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
R语言参考书:
R语言实用教程,薛毅,陈立萍编著,清华大学出版社,2014年10月第一版。
1.下载安装R软件:
R的网站:
,进入网站后出现画面:
第一步:
点击“CRAN”链接
第二步:
选择镜像china“”
第三步:
选择“DownloadRforWindows”——根据你的操作系统选择
第四步:
选择“base”
第五步:
选择“DownloadR3.2.0forWindows”下载安装
................................................................完成............................................................
二.R基础(用help(),或?
求帮助,getwd()获得R的当前工作目录,#是注释符)
1.R有两个主要概念:
对象和函数,用赋值运算符赋给对象内容。
赋值运算符赋:
尖括号<和减号-组成:
<-
###################################################
R变量
###################################################
x<-945
x
y<-39
y
y<-43#####刷新前面y的内容
y
z<-5
w<-z^2
w
i<-(z*2+45)/2#####用赋值表达式赋给对象内容
i
(34+90)/12.5#####只想知道结果
ls()########知道当前对象
rm(y)########删除当前对象,释放空间
rm(z,w,i)
.............................................完....................................................
###################################################
R向量
###################################################
对象都有模式和长度属性,数据类型有:
字符串、数值型、逻辑型、复数型。
用小写c加括号建立向量,数值向量可以做四则运算
v<-c(4,7,23.5,76.2,80)
v
length(v)###############长度
mode(v)###############模式
c(1,2,3,4)>c(1,1,4,5)##########向量做比较,产生的是逻辑向量F,T,F,F
一个向量的所有元素必须具有相同的模式,即数据类型,否则强制转换
v<-c(4,7,23.5,76.2,80,"rrt")#########执行强制转换,字符值用单引号或双引号
v
u<-c(4,6,NA,2)##############NA代表缺失值
u
k<-c(T,F,NA,TRUE)
k
v[2]##############向量的某个元素
v[1]<-'hello'
v
x<-vector()##############创建空向量
x[3]<-45
x
length(x)
x[10]
x[5]<-4
x
v<-c(45,243,78,343,445,44,56,77)
v
v<-c(v[5],v[7])#########创建向量子集
v
....................................................完.........................................................
###################################################
###VectorizationR向量化
###################################################
函数的向量化,函数可以直接对向量的每个元素进行操作
v<-c(4,7,23.5,76.2,80)
x<-sqrt(v)#########算术平方根
x
v1<-c(4,6,87)
v2<-c(34,32,12)
v1+v2
v1<-c(4,6,8,24)
v2<-c(10,2,4)###########重复循环短的向量
v1+v2
v1<-c(4,6,8,24)
2*v1
ages<-c(li=33,zhang=29,liu=18)###########带字符下标的向量
names(ages)###########给向量各元素起名字
ages[“liu”]或ages[‘liu’]或ages[3]###########取向量某元素
fruit<-c(5,10,1,20)
names(fruit)<-c('orange','banana','apple','peach')####给向量取名字
fruit
与数值向量有关的函数
max(x)##########求向量最大值
min(x)##########求向量最小值
range(x)##########求向量的范围
sum(x)##########求向量各分量之和
prod(x)##########求向量各分量之积
length(x)##########求向量各分量的个数(维数)
...................................................完...................................................
###################################################
###Factors因子
###################################################
因子处理分类数据,数据集中有取值个数固定的名义变量,因子特别有用,因子用水平来表示所有可能的数值。
factor(x=character,levels,labels=levels,exclude=NA,ordered=is.ordered(x))
X为数据向量,也是被转换成因子的向量,levels为可选向量,表示因子水平,当此参数取默认值时,由x元素中的不同值来确定,labels指定各水平名称,默认时取levels值,exclude为从x中删除的水平值,默认值NA,ordered为逻辑变量,取TURE为水平有次序,否则FALSE无次序。
g<-c('f','m','m','m','f','m','f','m','f','f')
#######有10个人的性别向量
g
g<-factor(g)#############把这个向量转换为因子
g
gg<-factor(c('m','m','m','m','m'),levels=c('f','m'))
#######有5个男性,要与g有相同的水平(数值个数)
gg
gg<-factor(c('m','m','m','m','m'))#######否则只有1个水平个数
gg
table(g)#######table()计算每个值的发生次数
table(gg)
is.factor(g)#######查看对象是否为因子
as.factor()#######强制转化为因子
levels(g)#######查看因子的水平
g<-c(1,2,3,2,3,1,1,1)
g<-factor(g)
levels(g)<-c('I','II','III')#######为因子的水平赋值
g
g<-factor(c('f','m','m','m','f','m','f','m','f','f'))
a<-factor(c('adult','adult','juvenile','juvenile','adult','adult',
'adult','juvenile','adult','juvenile'))
t<-table(a)#######统计各因子水平出现的频数
t<-table(g)
t<-table(a,g)#######table()用于获取多个因子的交叉表
margin.table(t,1)#######a的水平数
margin.table(t,2)#######g的水平数
prop.table(t,1)#######按行算总数,table(a,g)阵中的元素与总数比
prop.table(t,2)#######按列算总数,table(a,g)阵中的元素与总数比
prop.table(t)######各元素总和算总数,table(a,g)阵中的元素与总数比
###################################################
生成序列seq(),rep(),gl()
###################################################
x<-1:
1000
10:
15-1#############冒号优先
10:
(15-1)
5:
0#############递减
seq(-4,1,0.5)#############seq()生成实数序列,步长0.5
seq(from=1,to=5,length=4)#########生成4个数
seq(from=1,to=5,length=2)
seq(length=10,from=-2,by=0.2)#########从-2开始生成10个数,步长0.2
rep(5,10)############生成10个5
rep('hi',3)
rep(1:
2,3)
rep(1:
2,each=3)
gl(k,n)生成带有因子的序列,k因子水平个数,n每个水平的重复数
gl(3,5)
gl(2,5,labels=c('female','male'))#######labels代表因子数值名称
rnorm(10)############生成10个正态分布数
###################################################
###Indexing数据子集
###################################################
x<-c(0,-3,4,-1,45,90,-5)
x>0##########结果是逻辑值
x[x>0]##########结果是数值型
x[x<=-2|x>5]
x[x>40&x<100]
x[c(4,6)]##########提取所在向量位置的元素
x[1:
3]##########提取前3个
y<-c(1,4)
x[y]
x[-1]##########排除第1个
x[-c(4,6)]
x[-(1:
3)]
x[]<-0###########所有元素赋予0值
x<-0
###################################################
矩阵和数组
###################################################
矩阵:
数组储存的是多维数据元素,矩阵是数组的特殊情况
matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)
参数data为数据向量,默认值为NA,当不输入该数据时,可生成一个初始矩阵,nrow为矩阵的行数,默认值为1,ncol为矩阵的列数,默认值为1,byrow为逻辑变量,当取值是TURE,矩阵按行放置,当取值是FALSE,矩阵按列放置,dimnames为矩阵的行和列的名称,用列表输入,默认为空。
m<-c(45,23,66,77,33,44,56,12,78,23)
m
dim(m)<-c(2,5)############把向量组织为一个矩阵
m
m<-matrix(c(45,23,66,77,33,44,56,12,78,23),2,5)
#####使用更简单的命令,按列添
m<-matrix(c(45,23,66,77,33,44,56,12,78,23),2,5,byrow=T)
#####按行添数
m
m[2,3]##########取矩阵元素
m[-2,1]##########除去第2行,第一列所有元素
m[1,-c(3,5)]##########除去第3、5列,第一行所有元素
m[1,]
m[,4]
#############上面得到是向量
m[1,,drop=F]#############得到是矩阵
m[,4,drop=F]
cbind()、rbind()把矩阵分别按列、行结合起来
m1<-matrix(c(45,23,66,77,33,44,56,12,78,23),2,5)
m1
cbind(c(4,76),m1[,4])##################把矩阵按列结合
m2<-matrix(rep(10,20),4,5)
m2
m3<-rbind(m1[1,],m2[3,])##################把矩阵按行结合
m3
results<-matrix(c(10,30,40,50,43,56,21,30),2,4,byrow=T)
colnames(results)<-c('1qrt','2qrt','3qrt','4qrt')
############给矩阵列起名
rownames(results)<-c('store1','store2')############给矩阵行起名
results
results['store1',]
results['store2',c('1qrt','4qrt')]
m<-matrix(c(45,23,66,77,33,44,56,12,78,23),2,5)
m*3
m1<-matrix(c(45,23,66,77,33,44),2,3)
m2<-matrix(c(12,65,32,7,4,78),2,3)
m1+m2
####################矩阵运算都是元素和元素的运算
数组(Array):
是多维的,向量为一维数组,矩阵为二维数组。
数组中的元素数据类型必须一致,建立数组方法:
array(data=NA,dim=length(data),dimnames=NULL)
参数data为数据向量,默认NA,dim为整数向量,表示各维长度,默认为data的长度,dimnames为各维名称,用列表形式给出,默认值为空。
a<-array(1:
20,dim=c(4,5))
a
b<-array(1:
24,dim=c(3,4,2))
b
b[1,3,2]
b[1,,2]
b[3,4,]
b[c(2,3),,-2]###########取两行
...................................................完....................................................
列表list():
不同元素可以不同数据类型,也可不同长度
my.lst<-list(stud.id=34453,
stud.name="John",
stud.marks=c(14.3,12,15,19))
my.lst
my.lst$stud.name
my.lst[1]
my.lst[[1]]##########输出时不要列名
my.lst[[3]]
mode(my.lst)
mode(my.lst[[1]])##########输出值的属性
my.lst$stud.id
names(my.lst)##########输出列表元素名称(属性)
names(my.lst)<-c('id','name','marks')##########给列表元素命名
my.lst
my.lst$parents.names<-c("Ana","Mike")##########给列表添加元素
my.lst
length(my.lst)##########统计列表成分个数
my.lst<-my.lst[-4]##########删除列表成分
other<-list(age=19,sex='male')
lst<-c(my.lst,other)
lst
my.lst<-list(stud.id=34453,
stud.name="John",
stud.marks=c(14.3,12,15,19))
my.lst$parents.names<-c("Ana","Mike")
my.lst
unlist(my.lst)#########将列表转换成向量
.....................................................完..............................................
数据框data.frame()类似与excel表的数据结构,每列的数据类型可以不一致,但长度必须一致,列相当于属性,行相当于样本。
df<-data.frame(Name=c('Alice','Becka','James','Jeffrey','John'),
Sex=c('F','F','M','M','M'),
Age=c(13,13,12,13,12),
Height=c(56.5,65.3,57.3,62.5,59),
Weight=c(84,98,83,84,99.5)
)
df
与数据框有关的函数:
as.data.frame()#######将对象(矩阵、列表)强制转换
###########成数据框(各成分必须满足数据框要求)
is.data.frame()############判断对象是否为数据框
x<-array(1:
6,c(2,3))
######如果矩阵原有列名,则为数据框列名,否则系统给出
data.frame(x)
数据框的调用:
df[1:
2,3:
5]
df[["Height"]]
df$Weight
数据框的命名:
names(df)##########定义数据框的变量名
rownames(df)<-c("one","two","three","four","five")
###########定义数据框的各行名字
attach()函数、with()函数
R语言主要通过数据框来输入和保存数据,attach()函数可以把数据框中的变量“连接”到内存中,便于数据框中数据的调用。
它也可连接列表。
attach(df)
r<-Height/Weight
r
df$r<-Height/Weight##########把新变量赋值到数据框中
df
detach()##########取消连接
如果只做少量运算,也可用with()函数
df$r<-with(df,Height/Weight)
lapply()函数和sapply()函数:
对列表和数据框进行运算
lapply(X,FUN,...)
sapply(X,FUN,....,simplify=TURE,USE.NAMES=TURE)
X为列表或数据框,FUN为指定的运算函数,两函数用法相同,一个返回列表,一个返回数据框。
df<-data.frame(Name=c('Alice','Becka','James','Jeffrey','John'),
Sex=c('F','F','M','M','M'),
Age=c(13,13,12,13,12),
Height=c(56.5,65.3,57.3,62.5,59),
Weight=c(84,98,83,84,99.5)
)
lst<-list(Name=c('Alice','Becka','James','Jeffrey','John'),
Sex=c('F','F','M','M','M'),
Age=c(13,13,12,13,12),
Height=c(56.5,65.3,57.3,62.5,59),
Weight=c(84,98,83,84,99.5)
)
lapply(lst[3:
5],mean)
sapply(df[3:
5],mean)
或lapply(lst[c("Age","Height","Weight")],mean)
sapply(df[c("Age","Height","Weight")],mean)
………................................完..............................................
...............................................对象和类...........................................
R是基于对象的语言,对象中包含我们需要的数据,并且对象具有很多属性,其中最重要的属性是类,基本的类是数值、逻辑、字符串,还有复合型的类,如矩阵、数组、数据框、列表,用class()观察类,用attributes()观察其属性,str()用于了解对象的详细
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第一
![提示](https://static.bdocx.com/images/bang_tan.gif)