R语言第一课.docx

上传人:b****1 文档编号:23023298 上传时间:2023-04-30 格式:DOCX 页数:18 大小:299.63KB
下载 相关 举报
R语言第一课.docx_第1页
第1页 / 共18页
R语言第一课.docx_第2页
第2页 / 共18页
R语言第一课.docx_第3页
第3页 / 共18页
R语言第一课.docx_第4页
第4页 / 共18页
R语言第一课.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

R语言第一课.docx

《R语言第一课.docx》由会员分享,可在线阅读,更多相关《R语言第一课.docx(18页珍藏版)》请在冰豆网上搜索。

R语言第一课.docx

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()用于了解对象的详细

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1