第一章-R-基础-02(非参数统计-新)课件.ppt

上传人(卖家):三亚风情 文档编号:3041429 上传时间:2022-06-25 格式:PPT 页数:48 大小:579KB
下载 相关 举报
第一章-R-基础-02(非参数统计-新)课件.ppt_第1页
第1页 / 共48页
第一章-R-基础-02(非参数统计-新)课件.ppt_第2页
第2页 / 共48页
第一章-R-基础-02(非参数统计-新)课件.ppt_第3页
第3页 / 共48页
第一章-R-基础-02(非参数统计-新)课件.ppt_第4页
第4页 / 共48页
第一章-R-基础-02(非参数统计-新)课件.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、1.3 高级数据结构数据对象:矩阵,数组,数据框架和列表矩阵是二维向量,每个元素需要用两个指标表示,行和列。同理 n维数组。向量,矩阵,数组要求一致的数据类型。数据框与矩阵类似,不同点是可以允许类型不同。列表是数据框的扩展,可以是不整齐的行和列。1.3.1 矩阵的操作和运算1. 定义 matrix (data,nrow,ncol, byrow=F)例子:把例子:把c(1,2,20)转换为转换为4*5矩阵:矩阵: x=matrix(1:20,4,5, byrow=F);x ,1 ,2 ,3 ,4 ,51, 1 5 9 13 172, 2 6 10 14 183, 3 7 11 15 194, 4

2、 8 12 16 20 x=matrix(1:20,4,5,byrow=T);x ,1 ,2 ,3 ,4 ,51, 1 2 3 4 52, 6 7 8 9 103, 11 12 13 14 154, 16 17 18 19 20赋予列名 dimnames(x.matrix)=list(NULL,c(“a”, “b”) x.matrix#NULL,取消相应名称,X-matrix(1:6,ncol=2,byrow=T)dimnames(X)-list(c(one,two,three),c(First,Second)2.元素的提取 x.matrix1,2 x3,4 x,23.运算 x=matrix(

3、c(1,2,3,4),2) y=matrix(c(3,1,5,2),2) 数乘 2*x加 减 x+y转置 t(x) solve (x,y) #解xt=y apply(data,dim,function,.) x-matrix(c(1,2,3,4),2) apply(x,2,max) apply(x,2,min)x=matrix(1:30,5,6);y=matrix(rnorm(20),4,5)apply(x,1,mean)1 13.5 14.5 15.5 16.5 17.5apply(x,2,sum)1 15 40 65 90 115 140apply(x,2,prod)1 120 30240

4、 360360 1860480 6375600 171007204.合并 cbind 与 rbindx=matrix(c(1,2,3,4),2);y=matrix(c(3,1,5,2),2) z=c(7,6) cbind(x,z) rbind(x,z)1.3.2 数组生成数组或矩阵数组(array)可以看成是带多个下标的类型相同的元素的集合,常用的是数值型的数组如矩阵,也可以有其它类型(如字符型、逻辑型、复数型)R可以很容易地生成和处理数组,特别是矩阵(二维数组)数组有一个特征属性叫做维数向量(dim属性),维数向量是一个元素取正整数值的向量,其长度是数组的维数,比如维数向量有两个元素时数组为

5、二维数组(矩阵)维数向量的每一个元素指定了该下标的上界上界,下标的下界总为1a将向量定义成数组向量只有定义了维数向量(dim属性)后才能被看作是数组,比如:z-1:12dim(z)-c(3,4)注意:矩阵的元素是按列存放的,也可以把向量定义为一维数组,例如:dim (z)-122用array()函数构造多维数组 R软件可以用array()函数直接构造数组,其构造形式为array(data=NA, dim=length(data), dimnames=NULL)其中data是一个向量数据,dim是数组各维的长度,缺省时为原向量的长度dimnames是数组维的名字,缺省时为空,如 x-array(

6、1:20,dim=c(4,5)产生一个4x5的二维数组(矩阵)1.3.3 数据框数据框是R的一种数据结构,它通常是矩阵形式的数据,但矩阵各列可以是不同类型的,数据框每列是一个变量,每行是一个观测但是,数据框有更一般的走义,它是一种特殊的列表对象,有一个值为data.frame的class属性,各列表成员必须是向量(数值型、字符型、逻辑型)、因子、数值型矩、列表,或其它数据框,向量、因子成员为数据框提供一个变量,如果向量非数值型会被强制转换为因子,而矩阵、列表、数据框这样的成员为新数据框提供了和其列数、成员数、变量数相同个数的变量,作为数据框变量的向量、因子或矩阵必须具有相同的长度(行数)尽管如

7、此,一般还是可以把数据框看作是一种推广了的矩阵,它可以用矩阵形式显示,可以用对矩阵的下标引用方法来引用其元素或子集1数据框的生成数据框可以用data.frame()函数生成,其用法与list()函数相同,各自变量变成数据框的成分,自变量可以命名,成为变量名,例如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.0),Weight=c(84.0,98.0,83.0,84.0,99.5);df如果一个列

8、表的各个成分满足数据框成分的要求,它可以用as.data.frame()函数强制转换为数据框,比如,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.0),Weight=c(84.0,98.0,83.0,84.0,99.5);lst#则as.data.frame(lst)是与df相同的数据框as.data.frame(lst) attach() 数据绑定 a=matrix(c(1,2,3,4),2) t=c(

9、“good”, “good”) new.a=data.frame(a,t) attach(new.a) t X1 detach() 解除1.3.4 列表 a. 列表的构造列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可以是任意对象,不同元素不必是同一类型,元素本身允许是其它复杂数据类型,比如,列表的一个元素也允许是列表,下面是如何构造列表的例子lst-list(name=c(Fred,wife,Mary),no.children=3,child.ages=c(4,7,9)列表元素总可以用“列表名下标”的格式引用,例如,lst2lst32但是,列表不同于向量,我们每次只

10、能引用一个元素,如lst1:2的用法是不允许的注意:“列表名下标”或“列表名下标范围”的用法也是合法的,但其意义与用两重括号的记法完全不同,两重记号取出列表的一个元素,结果与该元素类型相同,如果使用一重括号,则结果是列表的一个子列表(结果类型仍为列表)在定义列表时如果指定了元素的名字(如lst中的name,wife,nochildren,child. ages),则引用列表元素还可以用它的名字作为下标,格式为“列表名元素名,如lstnamelstchild.ages另一种格式是“列表名$元素名”,如lst$namelst$child.ages构造列表的一般格式为lst-list(name_l=

11、object_l, , name_m=object_m)其中name是列表元素的名称, object是列表元素的对象2列表的修改列表的元素可以修改,只要把元素引用赋值即可,如将Fred改成John.lst$name- John如果需要增加一项家庭收入,夫妻的收入分别是1980和1600,则输入lst$income-c(1980, 1600)如果要删除列表的某一项,则将该项赋空值(NULL)几个列表可以用连接函数c()连接起来,结果仍为一个列表,其元素为各自变量的列表元素,如list.ABCData editor. 打开数据编辑器。 也可以通过fix()命令实现。 也可以通过edit()命令实现

12、。特别注意edit()命令并不把修改的结果回传给变量,而是传给.Last.value对象,因此一般情况下不要使用edit()命令。修改变量名修改变量名可以使用fix()调用内置编辑器直接修改。 可以使用reshape包中的rename()函数。 为变量设置标签为变量设置标签使用Hmisc包的label()函数。 删除变量删除变量删除独立的对象:rm()。 删除数据框/列表中的某个变量:令其为NULL。重新编码重新编码/赋值赋值把连续变量转变为分类变量:cut(),Hmisc包中的cut2()。寻找分割点:rpart包中的rpart(),Hmisc包中的tree()。 car包中的recode(

13、)。 组合数据行组合数据行rbind() 如果两组原始数据有不同的变量,可以使用reshape包中的rbind.fill()。 组合数据框组合数据框cbind() merge() reshape包中的merge_all() 数据汇总数据汇总aggregate() by() 缺失值缺失值判断某个值是否缺失值:is.na() 判断某行数据是否完整:complete.cases() 剔除缺失值:na.omit() 重复数据重复数据识别重复数据:duplicated() 去除重复数据:unique() 排序排序可以用sort()函数对数组和矩阵内的元素进行排序。 用order()函数可以得到数组和矩阵

14、排序后每个元素的位置。 1.5 编写程序1.5.1 循环和控制(1)控制结构 有ifelse语句、switch语句 1ifelse语句 ifelse语句是分支语句中主要的语句, ifelse语句的格式为 if(cond) statement_l第一句的意义是:如果条件cond成立,则执行表达式statement_l;否则跳过, if(cond) statement_l else statement_2第二句的意义是:如果条件cond成立,则执行表达式statement_l;否则执行表达式statement_2.if (条件) 表达式1 else 表达式2x=1 if(x=1)print(“x

15、is true”)elseprint(“x is false”)例如,x-c(2,3,1)if(any(x=0) y-log(1+x) else y-log(x)注意:此命令与下面的命令y-if(any(xx = c(6:-4)if (x = 0) sqrt(x) else NAx=rnorm(1);if (x0) y=x else y=-x+10 x=rnorm(1);if (x0) y=x else y=-x+10(2) 循环结构循环语句有for循环、while循环1for循环语句for循环的格式为for (name in expr_l) expr_2其中name是循环变量, expr_l

16、是一个向量表达式(通常是个序列,如1:20),expr_2通常是一组表达式。如构造一个4阶的Hilbert矩阵:n-4; x-array(0, dim=c(n,n)for(i in 1:n) for(j in 1:n) x i,j -1/(i+j -1) x2while循环语句while循环语句while语句的格式为while (condition) expr当条件condition成立,则执行表达式expr.例如,编写一个计算1000以内的Fibonacci数f-c(1,1)f1-1; f2-1; i-1while(fi+fi+11000)fi+2-fi+fi+1 i-i+1;f1.5.2

17、函数函数定义的格式如下,name-function(arg_1,arg_2,.) expressionexpression是R中的表达式(通常是一组表达式),arg_1,arg_2,表示函数的参数,表达式中,放在程序最后的信息是函数的返回值,返回值可以是向量、数组(矩阵)、列表或数据框。Y=x2+sin(x) f1=function(x)x2+sin(x) f1(10) f1(1:9) f2=function(x,y)return(x2);x2+y) f2(2,2) f3=function(x,y)return(x2);x+y;x2+y f3(3,3)编写一个函数,给出两个数之后,直接给出这两个数的平方和。sqtest-function(x, y) z1=x2; z2=y2; z3=z1+z2; return(z3); 问题:输入直角三角形的两个边长,求其斜边长。定义函数:rcal - function(x,y) z - x2 + y2 result - sqrt(z) return(result)调用函数:rcal(3,4)

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第一章-R-基础-02(非参数统计-新)课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|