R语言课件(简略版)_第1页
R语言课件(简略版)_第2页
R语言课件(简略版)_第3页
R语言课件(简略版)_第4页
R语言课件(简略版)_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、r语言,计算机与r语言,目录,第一章 网络基础知识及r介绍 第二章 r语言基础 第三章 数据的存储与读取 第四章 r的图形功能 第五章 r的程序设计 第六章 综合实例,第二章 r语言基础,一、一个简短的r会话 二、r的基本语法 三、r的数据结构,一、一个简短的r会话,数据的描述 ?mtcars mtcar:美国motor trend杂志收集的32辆汽车(1973-1974车型)的11项指标,一、一个简短的r会话,数据的浏览 所有数据 mtcars 前6个观测值 head(mtcars) 后6个观测值 tail(mtcars,一、一个简短的r会话,数据的编辑 方法一: data.entry(mt

2、cars) 方法二: mtcarsfix(mtcars) 区别:edit()修改结果不存入mtcars中;fix()结果保存至mtcars中,一、一个简短的r会话,浏览变量信息,例如mpg先激活数据集mtcars attach(mtcars) mpg 1 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 15 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 29 15.8 19.7 15.0 21.4,二、r语言的

3、基本语法,1、符号 1) 命令或运算提示符 2) + 续行符 3) # 说明语句字符 2、赋值符号 1) - 2),二、r语言的基本语法,3、基本算术运算 1) +加号 2)- 减号 3)*乘号 4)/除号 5) % 取模 6 ) %/% 整除 7) 乘方,运算优先级别递增 +-*/ %,%/% true=1;false=0,二、r语言的基本语法,4、比较运算符 1) 大于 2) =大于等于 4)= 小于等于 5)= 等于 6) != 不等于 比较运算得到的结果是逻辑常量true(真)和false(假,5、逻辑运算符 1) ! x逻辑非 当前逻辑值取反运算。 2)x mode(compare)

4、-true; mode(z)-1i 1 character 2 logical 3 complex,三、r语言的数据结构,思考题: 下列不是数值型数据的是()。 a123b.12.3c. 123 d.12e2.3 下列是字符型数据的是()。 a. trueb.1e2c. 123 d.5+1i 下列字符型定界符用法错误的是()。 a ab c b. ab c c. abc d. ab c 下列是逻辑型数据的是()。 a trueb.falsec.infd.nan inf是()型的数据。 a.数值型b.na型c.字符型d.逻辑型,三、r语言的数据结构,统计实例 例:一家保险公司收集到由36个投保个

5、人组成的随机样本,得到每个投保人的年龄(周岁)数据如表所示。试确定投保人平均年龄90%的置信区间,三、r语言的数据结构,注:置信区间是指数据可靠程度的范围。90%指置信水平。 求置信水平下的置信区间公式为:即x的均值加减常用置信水平的正态分布的临界值乘以样本标准差与样本个数开方的差。 90%- =1.645 95%- =1.96 99%- =2.58,三、r语言的数据结构,x-c(23,35,39,27,36,44, 36,42,46,43,31,33, 42,53,45,54,47,24,34,28,39,36,44,40, 39,49,38,34,48,50,34,39,45,48,45,

6、32) m-mean(x) s-sd(x) z1-m+1.645*(s/sqrt(36) z2-m-1.645*(s/sqrt(36) z-c(z1,z2) z,注:新建程序脚本实现,三、r语言的数据结构,三、r语言的数据结构,说明:向量是一个变量,是r中最常用、最基本的操作对象;因子是一个分类变量;数组是一个k维的数据表;矩阵是数组的一个特例,其维数k=2。 注意:数据或者矩阵中的所有元素都必须是同一种类型的;数据框是由一个或几个向量和(或)因子构成,它们必须是等长的,但是可以是不同的数据类型;“ts”表示时间序列数据,它包含一些额外的属性,例如频率和时间;列表可以包含任何类型的对象,包括列

7、表,三、r语言的数据结构,2、向量的建立 1)建立数值型向量 数值型向量是统计分析中最常用的向量,可以用下面四个函数建立: (1)seq( )或“:” #若向量序列具有较为简单的规律 (2)rep( )#若向量序列具有较为复杂的规律 (3)sequence() #输出从1到参数的向量 (4)c( )#若向量序列没有什么规律 (5)scan( )#通过键盘逐个输入,三、r语言的数据结构,1、n1:n2#生成从n1到n2步长为1(或-1)的向量 例如: 1:10 1 1 2 3 4 5 6 7 8 9 10 a 1:(10-1) 1 1 2 3 4 5 6 7 8 9 1:10-1 1 0 1 2

8、 3 4 5 6 7 8 9,三、r语言的数据结构,2、seq(n1,n2,by=n3,length=n4) #生成从n1到n2的向量, n3为步长,n4为生成元素的数量 seq(1,10) 1 1 2 3 4 5 6 7 8 9 10 seq(1,5,by=0.5) 1 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 seq(1,10,length=11) 1 1.0 1.9 2.8 3.7 4.6 5.5 6.4 7.3 8.2 9.1 10.0,三、r语言的数据结构,3、rep(n1,n2)#生成n1重复n2次的向量 rep(2,3) 1 2 2 2 rep(1:

9、5,2) 1 1 2 3 4 5 1 2 3 4 5 rep(1:5,1:5) 1 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 rep(1:5,rep(2,5) 1 1 1 2 2 3 3 4 4 5 5,三、r语言的数据结构,4、c()#直接输出向量 x=c(42,7,64,9) length(x) 5、scan()#通过键盘建立向量 scan() 1: 1 3 6 8 #此行末打一空格后回车 5: #冒号后直接打回车 read 4 items 1 1 3 6 8,三、r语言的数据结构,6、sequence(n1)#生成从1开始到n1结束步长为1的向量 sequence(5)

10、 1 1 2 3 4 5 sequence(c(5,5) 1 1 2 3 4 5 1 2 3 4 5 sequence(c(5,4) 1 1 2 3 4 5 1 2 3 4,思考题: 下列()不能生成向量(1 5 4 3 2 1)。 a. 5:1 b. 6-1:5 c.seq(1,5,by=-1)d.6-sequence(5) 下列()不能生成向量(1 1 2 3 4 5 1 2 3 4 5)。 a. rep(1:5,2) b. sequence(rep(5,2) c. 1:10%6 d. (0:9%5)+1,三、r语言的数据结构,2) 数值型向量的运算 向量的运算方法如下: (1)向量与一个

11、常数的加、减、乘、除为向量的每一个元素与此常数进行加、减、乘、除; (2)向量的乘方()与开方(sqrt)为每一个元素的乘方与开方,这对log,exp,sin,cos,tan 等普通的运算函数同样适用; (3)同样长度向量的加、减、乘、除等运算为对应元素进行加、减、乘、除等; (4)不同长度向量的加、减、乘、除遵从循环法则(recycling rule),但要注意这种场合通常要求向量的长度为倍数关系,否则会出现警告:“长向量并非是短向量的整数倍,三、r语言的数据结构,循环法则:同一个表达式中的向量并不需要具有相同的长度,如果它们的长度不同,表达式的结果是一个与表达式中最长向量有相同长度的向量,

12、表达式中较短的向量会根据它的长度被重复使用若干次(不一定是整数次),直到与长度最长的向量相匹配,而常数将被不断重复,三、r语言的数据结构,sqrt(c(2,4,25) 1 1.414214 2.000000 5.000000 1:2+1:4 1 2 4 4 6 1:4+1:7 1 2 4 6 8 6 8 10 警告信息: in 1:4 + 1:7 : 长的对象长度不是短的对象长度的整倍数,例子: 5+c(4,7,17) 1 9 12 22 5*c(4,7,17) 1 20 35 85 c(-1,3,-17)+c(4,7,17) 1 3 10 0 c(2,4,5)2 1 4 16 25,统计实例

13、 两变量线形相关系数的计算。 在-1和+1之间波动,其绝对值越接近1,两个变量间的直线相关越密切。 例题:trees数据集中树木高度(height)和木材体积(volume)的相关关系分析。 (1)绘制散点图 (2)计算相关系数值,三、r语言的数据结构,3)建立字符型向量 1. c() 直接输入向量 例如: c(a,b,1,1e2,true)#数字、逻辑型数据被强制转换为字符串 1 a b 1 100 true,2. paste() 接受任意字符,并顺次组合连成字符串,在默认情况下,各字符串由一个空格分隔,可以通过sep=string把它更改为其他字符,包括空字符串。 paste(a,1) 1

14、 a 1 paste(c(a,b),1) 1 a 1 b 1 paste(c(a,b),c(1,2) 1 a 1 b 2 paste(app, le,sep=) 1 apple,三、r语言的数据结构,例子 z-c(green,blue sky,-99) paste(1:12) paste(a, 1:6, sep = ) labs-paste(c(x, y),1:10,sep= ) paste(today is, date(,3. rep() #生成重复的向量 例如: rep(a,3) 1 a a a rep(c(a,b),3) 1 a b a b a b rep(c(a,b,c),rep(2,

15、3) 1 a a b b c c,4)建立逻辑型向量 1. c() 直接输入向量 例如: c(true,false,true) 1 true false true 2. rep() #生成重复的向量 例如: rep(c(true,false),2) 1 true false true false 3. 由运算生成 例如: 1:53 1 false false false true true,三、r语言的数据结构,5)建立因子型向量 一个因子(factor)或因子向量不仅包括分类变量本身,还包括变量不同的可能水平。 factor(x,levels = sort(unique(x), na.las

16、t = true),labels = levels, exclude =na, ordered = is.ordered(x) 说明:这里x可以是数值型或字符型向量。 levels用来指定因子的水平(缺省值是向量x中不同的值); labels用来指定水平的名字; exclude表示从向量x中剔除的水平值; ordered是一个逻辑型选项,用来指定因子的水平是否有次序,三、r语言的数据结构,1)将字符型向量转换为因子 a a a 1 green blue green yellow levels: blue green yellow,三、r语言的数据结构,2)将数值型向量转换成因子 b b b 1

17、 1,2,3,1 levels: 1 2 3 factor(rep(1:5,2) 1 1 2 3 4 5 1 2 3 4 5 levels: 1 2 3 4 5,三、r语言的数据结构,3)将字符型因子转换为数值型因子 a a levels(a) a 1 2 1 2 3 levels: 1 2 3 4 ff ff 1 1 2 3 levels: 1 2 3,三、r语言的数据结构,4)将数值型因子转换为字符型因子 b b levels(b) b 1 low middle high low levels: low middle high ff ff 1 a b c levels: a b c 注:函

18、数levels()用来提取一个因子中可能的水平值,三、r语言的数据结构,例如 ff ff 1 2 4 levels: 2 3 4 5 levels(ff) 1 2 3 4 5,三、r语言的数据结构,5)函数gl( )能产生规则的因子序列。 用法是 gl(k, n, length=产生数据的个数, label=每个水平因子的名字) 其中k是水平数,n是每个水平重复的次数。 例子 gl(3,5) 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 levels: 1 2 3,三、r语言的数据结构,gl(3,5,length=30) gl(2,6,label=c(male,female)

19、 gl(2,10) gl(2,1,length=20) gl(2,2,length=20,三、r语言的数据结构,6)向量的下标与子集的提取 选择一个向量的子集可以通过在其名称后面追加一个方括号中的索引向量来完成。 (1)正整数向量 x1:10 选取了x的前10个元素(假设x的长度不小于10)。 xc(1,4) 取出了向量x的第1和第4个元素。 xx2-7#改变向量的元素的值,三、r语言的数据结构,2)负整数向量 y fruit names(fruit) fruit lunch lunch,三、r语言的数据结构,4)逻辑向量 x x10 xx10 xx10 numeric(0) xx10 x,思

20、考题: 1.已知a5d.a5 3. 表达式max(c(1:5,7:10)6:8)的结果是()。 a. 1b.6c.7d.9 4. 已知a-c(1:5,7:10),则max(a6:8-3:1)的结果是()。 a. 1b.3c.9d.10 5. 已知a-c(1:5,7:10),则min(a-(1:7)的结果是()。 a. 1b.3c.9d.10,三、r语言的数据结构,3、数组与矩阵的建立 数组是一个k(1)维的数据表,矩阵是数组的一个特例,其维数k=2,向量可以看成维数为k=1的数组。而且向量、数组或者矩阵中的所有元素都必须是同一种类型的。 1)数组的建立 格式: array(data,dim,d

21、imnames) 其中data为一向量,其元素用于构建数组;dim为数组的维数向量;dimnames为由各维的名称构成的向量(字符型),缺省为空,三、r语言的数据结构,例子 a a , , 1 ,1 ,2 ,3 ,4 1, 1 4 7 10 2, 2 5 8 11 3, 3 6 9 12 , , 2 ,1 ,2 ,3 ,4 1, 1 4 7 10 2, 2 5 8 11 3, 3 6 9 12,其中,dim=c(3,4,2)的第一个3代表有3行,第二个4代表有4列,第三个2代表有2组,a - array(1:8,dim = c(2,2,2)会怎样,三、r语言的数据结构,b b dim(a) d

22、imnames(a) a colnames(a) rownames(a) dimnames(a,三、r语言的数据结构,例子 a a a a a a,三、r语言的数据结构,2)矩阵的建立 由于矩阵在数学及统计中的特殊性,在r中最为常用的是使用命令matrix( )建立矩阵。格式:matrix(data=na,nrow=1,ncol=1,byrow=false,dimnames=null) 其中data是一个向量数据,nrow是矩阵的行数,ncol是矩阵的列数,当byrow=true时,生成矩阵的数据按行放置,缺省时相当于byrow=false,数据按列放置。dimnames是数组维的名字,缺省时

23、为空,三、r语言的数据结构,例子 x x x x a a 注意:循环准则仍然适用于matrix(),但是要求数据项的个数等于矩阵的列数的倍数,否则会出现警告,三、r语言的数据结构,3)数组与矩阵的下标(index)与子集(元素)的提取 同向量的下标一样,矩阵与数组的下标可以使用正整数、负整数和逻辑表达式,从而实现子集的提取或修改,三、r语言的数据结构,x x x2,2 #取出一个元素 x2, #取出一行元素 x,2 #取出一列元素 x-1, #去掉第1个行 x,-2 #去掉第2个列 x,3xis.na(x) x,思考题: 已知矩阵a-matrix(rep(1:4,4),4,4);若要将a转换成

24、如下矩阵,应使用的命令是()。 ,1 ,2 1, 2 2 2, 3 3 a. a-(c(1,4),-(3:4)b. a-(3:4),-c(1,4) c.a-1,-4, ,3:4 d. a3:4,2:3,三、r语言的数据结构,4)对矩阵的运算(函数) (1)矩阵的代数运算 转置函数t( ) x x t(x) 提取对角元diag( ) x x diag(x) diag(3) #生成3行的单位矩阵,一个 mn矩阵a的行与列的元素互换而得到的nm矩阵,称为a的转置矩阵,对角线元素都是 1的 n阶对角矩阵,称为n阶单位矩阵,三、r语言的数据结构,按行合并rbind( )与按列合并cbind( ) m1

25、m2 rbind(m1,m2) cbind(m1,m2) 矩阵的逐元乘积“*” m2*m2,1 ,2 ,3 ,4 1, 1 1 2 2 2, 1 1 2 2,1 ,2 1, 1 1 2, 1 1 3, 2 2 4, 2 2,1 ,2 1, 4 4 2, 4 4,1 ,2 1, 1 1 2, 1 1,1 ,2 1, 2 2 2, 2 2,m1,m2,rbind(m1,m2,cbind(m1,m2,m2*m2,三、r语言的数据结构,矩阵的代数乘积“%*%” 【注】矩阵的代数乘法 设 分别是m n, n p矩阵, 则矩阵a与b的乘积是一m p矩阵,例1: m3 m4 m3%*%m4 ,1 ,2 1,

26、 11 19 2, 16 28 例2: rbind(m1,m2)%*% cbind(m1,m2) ,1 ,2,3 ,4 1, 2 2 4 4 2, 2 2 4 4 3, 4 4 8 8 4, 4 4 8 8 cbind(m1,m2) %*% rbind(m1,m2) ,1 ,2 1, 10 10 2, 10 10,三、r语言的数据结构,方阵的行列式det( ) x x ,1 ,2 1, 1 3 2, 2 4 det(x) 1 -2 说明:行列式相当于主对角线(左上至右下)元素的乘积减去副对角线(右上至左下)元素的乘积,三、r语言的数据结构,其它函数 crossprod( ):交叉乘积函数; e

27、igen( ):特征根与特征向量函数; qr( ):qr分解函数。 solve ():逆矩阵函数。 例:x-matrix(1:4,2,2) y-solve(x) y,思考题: 已知a-matrix(1:4,2,2);b-matrix(5:8,2,2);若要生成如下矩阵,应设置表达式为()。 ,1 ,2 ,3 ,4 1, 1 2 5 6 2, 3 4 7 8 a.rbind(a,b)b.rbind(t(a),b) c.cbind(a,b)d.cbind(t(a),t(b,矩阵的统计学意义 多元线性相关分析:两个变量之间的关系为简单相关,三个或三个以上的称为偏相关(复相关)。 例如:做小鼠麻醉实验

28、时,麻醉药品的用量与小鼠的种类,药品的种类,小鼠的体积密切相关。 国家财政收入、国民生产总值、税收、进出口贸易总额、经济活动人口数量之间的关系,x为样本资料矩阵,此时任意两个变量间的相关系数构成的矩阵为,f=matrix(c(11.3262,36.241,5.1928,3.550,406.82,11.4638,40.382,5.3782,4.120,415.92,11.5993,45.178,5.7170,5.700,429.03,513.2178,2495.299,456.2197,1667.402,786.45,613.3035,3006.700,542.1962,1778.898,790

29、.48),5,5,byrow=t) f cor(f) #计算相关系数 pairs(f) #矩阵散点图,三、r语言的数据结构,2)矩阵的统计运算 函数1:apply(x,margin,fun) 其中x为参与运算的矩阵,fun为上面的一个函数或“+”、“-”、“*”、“/”(必须放在引号中),margin=1表示按行计算,margin=2表示按列计算。 函数2:sweep(x,margin,stats,fun) 表示从矩阵x中按matgin计算stats,并从x中除去。 fun默认是“,三、r语言的数据结构,例1:求均值,中位数等 m apply(m,margin=1,fun=mean) #求各行

30、的均值 apply(m,margin=2,fun=mean) #求各列的均值,三、r语言的数据结构,减去中位数 row.med-apply(m,margin=1,fun=median) sweep(m,margin=1,stats=row.med,fun,三、r语言的数据结构,4、列表与数据框的建立 1)列表的建立 列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可以是任意对象,不同元素不必是同一类型。元素本身允许时其它复杂数据类型,比如,列表的一个元素也允许是列表,三、r语言的数据结构,格式: lst-list(name_1=object_1, , name_m=ob

31、ject_m) 其中name是列表元素的名称,object是列表元素的对象,三、r语言的数据结构,例子 lst lst $name 1 fred $wife 1 mary $no.children 1 3 $child.ages 1 4 7 9,列表元素总可以用“列表名下标”的格式引用, lst2 1 mary lst42 1 7 lstname 1 fred lstchild.age null lstchild.ages 1 4 7 9 lst$name 1 fred lst$wife 1 mary,三、r语言的数据结构,列表的元素可以修改,只要把元素引用赋值即可。 lst$name lst

32、$income list.abc-c(list.a,list.b,list.c,三、r语言的数据结构,2)数据框的建立 统计分析中一个完整的数据集通常是由若干个变量的若干个观测值组成的,在r中称为数据框,观测值的序号,观测值,变量,维数:二维,三、r语言的数据结构,矩阵,数据框,三、r语言的数据结构,1)数据框的生成 数据框可以用data.frame()函数生成,其用法与list()函数相同,各自变量变成数据框的成分,自变量可以命名,称为变量名。 直接建立的函数:data.frame(name_1=object_1, , name_m=object_m) 间接建立的方法: 在txt中存入数据如: 使用命令: foo-read.table(file=“d:/r/foo.txt”,header=t,treat weight a3.4 bna a5.8,df df name sex age height weight 1 alice f 13 56.5 84.0 2 becka f 13 65.3 98.0 3 james m 12 57.3 83.0 4 jeffrey m 13 62.5 84.0 5 john m 12 59.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论