【教学课件】第二讲R语言的基本数据结构.ppt

上传人:小飞机 文档编号:5662485 上传时间:2023-08-07 格式:PPT 页数:54 大小:680.50KB
返回 下载 相关 举报
【教学课件】第二讲R语言的基本数据结构.ppt_第1页
第1页 / 共54页
【教学课件】第二讲R语言的基本数据结构.ppt_第2页
第2页 / 共54页
【教学课件】第二讲R语言的基本数据结构.ppt_第3页
第3页 / 共54页
【教学课件】第二讲R语言的基本数据结构.ppt_第4页
第4页 / 共54页
【教学课件】第二讲R语言的基本数据结构.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《【教学课件】第二讲R语言的基本数据结构.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第二讲R语言的基本数据结构.ppt(54页珍藏版)》请在三一办公上搜索。

1、第二讲 R语言的基本数据结构,作业1:按下面表格的形式生成本组信息的数据框,并提交原程序.Name为字符型、ID为数字型、Team.Num为分组因子、Duty为分组因子、Grade1-5为数值型,Base:is.thingsBase:recursionGraphics:HersheyGraphics:JapaneseGraphics:graphicsGraphics:imageGraphics:perspGraphics:plotmathLattice:intervalsLattice:labelsLattice:latticeLattice:panelStats:glm.vrStats:lm

2、.glmStats:nlmStats:smooth,作业2:利用sample函数设计算法,把下面16个demo公平地分配给15个组,并提交原程序,一、R语言的对象,所有在R语言中可操作的各种数据及各种表达式等都叫R语言的操作对象。,对象命名:1、对象的名字必须是以一个字母开头(AZ 或az),中间可以包含字母,数字(09),点(.)及下划线(_);2、R对对象的名字区分大小写;3、避免用R的各种包中的既有对象名来对对象命名:例如,if、for、pi等3、可以通过输入一个对象的名字来显示其内容,例如,一个名为n的对象,其内容是数值10:n 1 10,对象的产生、查询及删除,1、赋值:namels

3、()ls(pat=“m”)ls.str()/将会展示内存中所有对象的详细信息,3、删除:rm(x)删除内存中所有对象:rm(list=ls()注:ls()函数中的一些选项同样可以运用到 rm中来,对象的基本属性,每个对象包含很多基本属性,常用的有对象的类型、存储类型、对象模式、对象长度、对象维度、对象名称等。,数值型Numeric 如 100,0,-4.335字符型Character 如“China”逻辑型Logical 如TRUE,FALSE因子型Factor 表示不同类别复数型Complex 如:2+3i,对象的类型:mode(object),对象的长度:length(object);,f

4、ruit names(fruit)mode(fruit)1 numeric length(fruit)1 4,对象属性的转换,常用对象转化函数as.character()#转换为字符型as.numeric()#转换为数值型as.logical()#转换为逻辑型plex()#转化为复数型as.factor()#转化为因子型methods(as)#methods包中的全部转换函数methods(is)#methods包中全部对象类型判别函数,二、数据的创建,三、数值向量,1、规则序列xxyyxxrep(1,time=30)#创建一个所有元素都相同的向量sequence(4:5)#创建一系列联系的整

5、数序列 1 1 2 3 4 1 2 3 4 5,gl(k,n)/k是水平数,n是每个水平重复的次数,有两个选项:length用来指定产生数据的个数,labels用来指定每个水平因子的名字gl(3,5)gl(3,5.4)#?,2、随机序列 R可以产生多种不同分布下的随机数序列。sample(1:40,5)1 25 32 2 35 9sample(c(H,T),10,replace=T)1 H H T H H T H H H H“,分布函数的形式rfunc(n,p1,p2,.),其中func指概率分布函数,n为生成数据的个数,p1,p2,.是分布的参数数值。如:rnorm#随机产生正态分布的数据

6、rnorm(100,2,5)#mean=1,sd=5 随机分布函数rfunc r:random 密度函数dfunc d:density 累计概率密度函数pfunc p:probability 分位数函数qfunc q:quantile,3、分布函数,plot(rnorm(100,2,5),x plot(x,dnorm(x),type=l),逻辑向量,逻辑向量包含TRUE、FALSE和NA(not availabe)逻辑向量可以同数值向量一起运算:TRUE=1,FALSE=0 SequenceNum Logicvector2.5 logicvector 错误:找不到对象logicvector L

7、ogicvector 1 FALSE FALSE TRUE TRUE,c(1:3,NA)-NaData NaData1 1 2 3 NA NaData8 NaData1 1 2 3 NA NA NA NA 8 is.na(NaData)1 FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE,字符向量,可以用两个单引号()或两个双引号(“)去界定字符向量“/”用来识别字符串中包含的()或(“)例子:UserInfor UserInfor1 name users password e-mail“labs labs 1 X1 Y2 X3 Y4 X5 Y6 X7 Y

8、8 X9 Y10,复数向量,z z 1 1.0464457+1.4921546i-0.0857576+0.6500323i-0.4077956+0.7363948i 4 1.2992962+1.0821262i-1.3359859-2.2430534i 1.0756972+1.4531898i 7 1.1084957+0.6604677i 1.2716703+0.4288688i 0.2792403+0.4181003i zz zz.shift zz.shift,五、分组因子,R语言可以将一套数据中相同分类的数据进行分组,所用组别对象称为分组因子可以用factor()函数生成一个分组因子分组因

9、子可以方便地对分组数据做相应计算,如:计算平均值、总和或按某种函数形式例子:factor(sample(letters,10,replace=T),levels=letters)1 g b w j c z o d p q Levels:a b c d e f g h i j k l m n o p q r s t u v w x y z,六、数组及矩阵,数组是带多个下标的、类型相同的元素的多维数据集合,类型有数值型、字符型、逻辑型、复数型等矩阵为二维数组一维数组并不等效为向量除了类型和长度等基本属性外,数组还有一个特殊属性叫做维数向量,用dim()定义,数组定义,FirstArray Firs

10、tArray 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 dim(FirstArray)FirstArray#数组的填充规则:越靠前的下标变化越快;#越靠 后的下标变化越慢,1,1,2,3,41,1 4 7 102,2 5 8 113,3 6 9 12,2,1,2,3,41,13 16 19 222,14 17 20 233,15 18 21 24,#等价于 FirstArray-array(seq(1:24),dim=c(3,4,2),Dimnames属性,Prices Prices 64M 128M 25

11、6Mvender1 20 22 76vender2 24 56 87,Prices,c(“64M”,“256M”)#通过维名访问数组 64M 256Mvender1 20 76vender2 24 87,向量,数组的混合运算,规则:1、表达式中各元素匹配时,总是从左到右。2、在进行计算时比较短的向量会扩展数据以适应最大数量元素的操作数。扩展数据的基本规则为循环地从第一个元素开始填充所需要的数据。3、所有的数组必须具有相同的dim属性,否则返回一个错误。4、任何一个向量的操作结果的长度大于数组间操作结果的长度时,R语言会产生错误。5、如果数组间操作无误,那么计算结果也是一个相同维度的数组。,a1

12、 a2 a1,1,2,31,1 5 92,2 6 103,3 7 114,4 8 12 a2,1,2,31,1 4 72,2 5 83,3 6 9 a1+a2错误于a1+a2:非整合陈列,a2 a2,1,2,31,1 5 92,2 6 13,3 7 24,4 8 3 a1+a2,1,2,31,2 10 182,4 12 113,6 14 134,8 16 15 a1*a2,1,2,31,1 25 812,4 36 103,9 49 224,16 64 36,不同dim属性,相同dim属性,不同dim属性,相同dim属性,a3 a3,1,2,31,1 2 3 a2+a3错误于a2+a3:非整合陈

13、列,一维数组并不等效为向量,a4 a41 1 2 3 a4+a2,1,2,31,2 7 122,4 9 23,6 8 44,5 10 6,向量与数组运算,a5 a4+a51 2 4 6 5 7 9 8警告信息:In a4+a5:长的对象长度不是短的对象长度的整倍数,不同长度的向量运算,a6 a6+a2错误:dims product 12与对象长度13不匹配此外:警告信息:In a6+a2:长的对象长度不是短的对象长度的整倍数 a7 a7+a2错误:dims product 12与对象长度24不匹配,一维数组并不等效为向量,不同长度的向量运算,两个数组的外积,A B A,1,21,1 32,2

14、4 B,1,2,3,41,1 4 7 102,2 5 8 113,3 6 9 12,B%o%A,1,1,1,2,3,41,1 4 7 102,2 5 8 113,3 6 9 12,2,1,1,2,3,41,2 8 14 202,4 10 16 223,6 12 18 24,1,2,1,2,3,41,3 12 21 302,6 15 24 333,9 18 27 36,2,2,1,2,3,41,4 16 28 402,8 20 32 443,12 24 36 48,AB-outer(B,A,“*”)#?outer(),数组转置,aperm(a,perm,resize=TRUE)#a为数组,per

15、m为转置下标向量,x x,1,2,31,1 3 52,2 4 6 xt xt,1,21,1 22,3 43,5 6,x x,1,1,2,31,1 3 52,2 4 6,2,1,2,31,7 9 112,8 10 12,3,1,2,31,13 15 172,14 16 18,4,1,2,31,19 21 232,20 22 24,xt xt,1,1,21,1 22,3 43,5 6,2,1,21,7 82,9 103,11 12,3,1,21,13 142,15 163,17 18,4,1,21,19 202,21 223,23 24,七、矩阵,#nrow定义行数,ncol定义列数,dimnam

16、es定义行和列的名称,byrow定义矩阵的填充顺序,为T时按行填充,为F时按列填充mdat mdat C.1 C.2 C.3row1 1 2 3row2 11 12 13,t(mdat)row1 row2C.1 1 11C.2 2 12C.3 3 13,xt xt row1 row2C.1 1 11C.2 2 12C.3 3 13,转置,t(mdat)row1 row2C.1 1 11C.2 2 12C.3 3 13,xt xt row1 row2C.1 1 11C.2 2 12C.3 3 13,转置,a1 a2 a1,1,2,31,1 3 52,2 4 6 a2,1,2,31,1 4 72,

17、2 5 83,3 6 9 a1%*%a2,1,2,31,22 49 762,28 64 100 a1%*%a1错误于a1%*%a1:非整合参数 a2%*%a1错误于a2%*%a1:非整合参数,两个矩阵内积,Coefficient Result solve(Coefficient,Result)#sovle()返回线性方程组行列式结果1 2-3#a=2,b=-3,求解线性方程组:3a-2b=122a+b=1,solve(Coefficient)#求矩阵Coefficient的逆,1,21,0.1428571 0.28571432,-0.2857143 0.4285714,矩阵计算函数,练习2.1

18、熟练掌握矩阵计算的有关函数,数组矩阵合并,函数rbind()把参数变量按行拼成一个大矩阵,两个数组(或向量)的列数必须相等函数cbind()把参数变量按列拼成一个大矩阵,两个数组(或向量)的行数必须相等,a1 a2 a1,1,2,31,1 3 52,2 4 6 a2,1,2,31,1 4 72,2 5 83,3 6 9 rbind(a1,a2),1,2,31,1 3 52,2 4 63,1 4 74,2 5 85,3 6 9,cbind(a1,a2)错误于cbind(a1,a2):矩阵的行数必需相符(见arg2)t(a1),1,21,1 22,3 43,5 6 a1 cbind(a1,a2),

19、1,2,3,4,51,1 2 1 4 72,3 4 2 5 83,5 6 3 6 9,八、数据分割与选取,向量索引Xn#第n个元素X-n#除了第n个元素外的XX1:n#前n个元素X-(1:n)#第n+1至最后的元素Xc(1,4,2)#指定下标的元素X“name”#名为name的元素XX3#所有大于3的元素XX3&X=5#区间(3,5的元素XX%in%c(“a”,”and”,”the”)#给定组c()中的元素,X names(X)Xa b c d e f g h i 1 2 3 4 5 6 7 8 9 X6f 6 X2:6b c d e f 2 3 4 5 6 X-3a b d e f g h

20、i 1 2 4 5 6 7 8 9 X-(5:9)a b c d 1 2 3 4 X-c(5,9,2)a c d f g h 1 3 4 6 7 8,XX5f g h i 6 7 8 9 XX5&X Xc(c,g,d)c g d 3 7 4 XX%in%letters5:13named integer(0)XX%in%5:13e f g h i 5 6 7 8 9,sstr sstrsstr%in%c(letters,LETTERS)1 c B c a,例子,Xi,j#下标为(i,j)的元素Xi,#第i列X,j#第j列X,c(1,3)#第1,3列X“name”,#名为”name”的行,数组具有

21、类似的数据分割与选取方法,矩阵索引,练习2.2 熟练掌握数据分割与选取的方法,X X D E F Ga 1 2 3 4b 5 6 7 8c 9 10 11 12 X2,31 7 X2,D E F G 5 6 7 8 X,4 a b c 4 8 12 X,c(1,3)D Fa 1 3b 5 7c 9 11 Xa,D E F G 1 2 3 4,九、数据列表,数据列表(list)是一组数据元素的集合,这些数据元素可以是不同的数据结构(dim属性,数据类型等)list()函数可以组合任意对象,FamilyInfo FamilyInfo$hostname1 joe$wife1 rose$no.chil

22、dren1 3$child.ages1 1 3 7 FamilyInfo$wife#通过元素的名字来访问1 rose“FamilyInfo3#通过元素的编号来访问$no.children1 3 FamilyInfo31 3,例子,数据列表操作,长度扩展,length(FamilyInfo)1 4 FamilyInfo5 FamilyInfo$hostname1 joe$wife1 rose$no.children1 3$child.ages1 1 3 751 10th F,HongXing Building,No.100,JainYe Road,数据列表合并,FamilyBirthday c(

23、FamilyInfo,FamilyBirthday)-Family#函数c()可以连接数据列表 Family$hostname1 joe$wife1 rose$no.children1 3$child.ages1 1 3 751 10th F,HongXing Building,No.100,JainYe Road$hostbirthday1 1979/10/08$wifebirthday1 1973/07/09,数据框(data frame)是一个属于data.frame 类的列表。不过,对于可能属于数据框的列表对象有下面一些限制条件,1、分量必须是向量(数值,字符,逻辑),因子,数值矩阵,

24、列表或者其他数据框;2、矩阵,列表和数据框为新的数据框提供了尽可能多的变量,因为它们各自拥有列,元素或者变量;3、数值向量,逻辑值,因子保持原有格式,而字符向量会被强制转换成因子并且它的水平就是向量中出现的独立值;4、在数据框中以变量形式出现的向量结构必须长度一致,矩阵结构必须有一样的行数.数据框常常会被看作是一个由不同模式和属性的列构成的矩阵。它能以矩阵形式出现,行列可以通过矩阵的索引习惯访问。,十、数据框,创建数据框,L3 d d x y fac1 1 1 C2 1 2 A3 1 3 B4 1 4 C5 1 5 A6 1 6 B7 1 7 B8 1 8 B9 1 9 B10 1 10 A,

25、d1 x1 12 13 14 15 16 17 18 19 110 1 d1 1 1 1 1 1 1 1 1 1 1 1,mode(d1)1 list mode(d1)1 numeric length(d1)1 1 length(d1)1 10 d231 3,d d x y fac HT1 1 1 B T2 1 2 A H3 1 3 B H4 1 4 A T5 1 5 C T6 1 6 A T7 1 7 B H8 1 8 C T9 1 9 C H10 1 10 A T rbind(class=sapply(d,class),mode=sapply(d,mode)x y fac HT class

26、 numeric numeric factor factor mode numeric numeric numeric numeric,d d x y fac HT1 1 1 A H2 1 2 A T3 1 3 C T4 1 4 A T5 1 5 B H6 1 6 C H7 1 7 C T8 1 8 A H9 1 9 A T10 1 10 C H rbind(class=sapply(d,class),mode=sapply(d,mode)x y fac HT class numeric numeric AsIs factor mode numeric numeric character nu

27、meric,d3 1 A A C A B C C A A C d4 1 H T T T H H T H T HLevels:H T,函数I():Change the class of an object to indicate that it should be treated as is,十一、数据运算,练习2.3 熟练掌握数据运算的有关符号和函数,十二、数据的选择与操作,十三、高级数据处理,对于向量,可以用函数直接对其进行计算对于数组和矩阵,如果需要对其中一维(或若干维)进行某种计算时,则可以用apply()函数自定义数组的操作.apply(X,MARGIN,FUN,)#X给定数组,MAR

28、GIN指定维数,FUN自定义计算函数。,#FUN为R自带包中的函数 X X,1,2,3,4,5,61,1 5 9 13 17 212,2 6 10 14 18 223,3 7 11 15 19 234,4 8 12 16 20 24 apply(X,MARGIN=1,sum)1 66 72 78 84 apply(X,MARGIN=2,sum)1 10 26 42 58 74 90,#FUN为自定义函数 f ffunction(V)d=sd(V)/mean(V);return(d);apply(X,MARGIN=2,f)1 0.51639778 0.19861453 0.12295185 0.08903410 0.06978348 0.05737753 apply(X,MARGIN=1,f)1 0.6803013 0.6236096 0.5756396 0.5345225,例子,lapply(X,FUN)#应用FUN到列表X的每个元素tapply(X,INDEX,FUN)#根据X的索引(INDEX)对不完全的数列应用FUNsapply()#同lapply,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号