R语言分组因子、数组、数据单处理.ppt

上传人:za****8 文档编号:13190127 上传时间:2020-06-07 格式:PPT 页数:39 大小:877.01KB
返回 下载 相关 举报
R语言分组因子、数组、数据单处理.ppt_第1页
第1页 / 共39页
R语言分组因子、数组、数据单处理.ppt_第2页
第2页 / 共39页
R语言分组因子、数组、数据单处理.ppt_第3页
第3页 / 共39页
点击查看更多>>
资源描述
第四章分组因子,R语言可以将一套数据中相同分类的数据进行分组,然后可以方便的进行聚集计算。,分组因子是一个表示分类分组的方法的对象。在R语言中,通过使用分组因子定义不同的分组方法,然后在对分组数据进行相应计算。可以使用factor()函数生成一个分组因子。调用格式为:先列举所有数据,然后levels列举分组数据。,例题,read.csv(file=file.choose(),header=T)-team;team;factor(TEAM)-TeamFactor;levels(TEAM);,聚集计算是将同一组数据进行分组计算。函数tapply(X,INDEX,FUN=NULL,.,simplify=TRUE)X:聚集计算的数据对象,INDEX:相应的分组因子,FUN:聚集计算的函数。,(1)各组工作时间tapply(WORLTIME,TeamFactor,sum)=SumWorktimeByTeam;SumWorktimeByTeam;(2)各组平均工作时间average=function(x)sum(x)/length(x);tapply(WORLTIME,TeamFactor,average)=AverageWorktimeByTeam;AversgeWorktimeByTeam;(3)TEAM中各LEVEL人员的工作时间factor(LEVEL)-LevelFactor;list(TeamFactor,LevelFactor)=TLFactor;tapply(WORLTIME,TLFactor,sum)=SumWorktimeByTL;,在R语言系统中,分组因子缺省按照字母的顺序排序,我们可以利用order()函数产生定制的排序函数。,例:按照CLIENT、BATCH、ONLINE的顺序形成分组因子。ordered(TEAM,c(CLIENT,BATCH,“ONLINE”)=TeamFactor;TeamFactor;,第五章数组和矩阵,数组和矩阵是R语言中的基本数据模式。数组可以看成带多个下标的、类型相同的元素的多维数据集合,常用的是数值型的数组如矩阵。,在R语言中可以通过定义维度向量来定义数组的维度。维度向量是正整数向量,其长度是数组的维度,各数值表示各维度数据的长度。定义了各向量维度之后,语言就会将其作为数组处理。(1)函数dim(a,b,c)定义数组的维数。可以简单理解(a,b)为一个二维数组的行和列,c为二维数组的个数。(2)函数attributes()可以获取FirstArray对象的特征属性。例如:attributes(FirstArray),例:一个有24个数值的向量,并将其定义成3*4*2的数组FirstArray=seq(1:24);dim(FirstArray)=c(3,4,2);FirstArray,1#第一组3*4矩阵,1,2,3,41,147102,258113,36912,2#第二组3*4矩阵,1,2,3,41,131619222,141720233,15182124,一、下标操作在R语言中,可以在中使用下标操作获取数组的子集,其基本形式为:Array_NameIndex_Vector(其中Array_Name为数组名,Index_Vector为下标向量)。,例一:FirstArray,2#第三维下标为2的所有数据。FirstArray3,#第一维下标为3的所有数据。注:FirstArray,是整个数组。,例二、根据下标向量取数据FirstArray2:3,2:4,1,1,2,31,58112,6912,例三、利用dim()函数获取一个数组的维数dim(FirstArray)-FirstArrayDimFirstArrayDim1342注:此处的赋值不能用“=”,例四、使用下标向量访问数组FirstArray1,2,2Index=c(2,4,23,9);FirstArrayIndex124239FirstArray-Index1135678101112131415NA17181920212224FirstArray!is.na(FirstArray)11234567891011121314151718192021222324,二、下标数组在R语言中,可以用下标数组访问数组的子集,保存下标数组要访问数组的下标,而且下标数组的列要等同于数组维数,可以包含多行,每行为代取或带操作元素的下标。,例IndInd,1,2,31,1322,231FirstArrayInd1198#FirstArray1,3,22,3,1,FirstArrayIndFirstArray,1,1,2,3,41,147102,250113,36912,2,1,2,3,41,13NA0222,141720233,15182124,同dim()函数一样,我们可以通过使用array(),matrix()函数将一个向量构造成数组和矩阵。基本形式:array(data=NA,dim=length(data),dimnames=NULL)data为包含数组数据的向量;dim为dim属性定义数组的维度;dimnames为维度的名字,可以为每一个维度定义一个名字。,例一、构造2*3数组DataArrArr,1,2,31,1352,246等价于下面两种方法:1、Arrx1x1,1,21,122,34,x1x1,1,21,122,34x2x3x3,1,2,3,41,1211122,341314,因为cbind()和rbind()的结果总是矩阵类型(有dim属性且为2),所以可以用它们把向量表示为矩阵(用cbind(x)和rbind(x)),5.6.2使用连接构造函数c,设a是一个数组,若要把它转换为向量(去掉dim,dimnames属性)则可以使用函数as.vector(a)。需要注意,函数只能通过函数值返回结果而不允许修改它的自变量,比如,t(X)返回X的转置矩阵而X本身并未改变。另一种由数组得到其数组向量的简单办法是使用函数c(),例如,c(a)返回的结果是a的数据向量,c()函数的另一个好处是它允许多个自变量,可以把多个自变量都看成数据向量而连接起来。例如,设A和B都是两个矩阵,则c(A,B)表示把A按列次序拉直为向量并与把B按列次序拉直为向量的结果连接起来,一定注意拉直是按列次序拉直的。,对于向量,我们有sum,mean等函数进行计算;对于数组,如果需要对其中一维(或若干维)进行某种计算,则可以用apply()函数自定义数组的操作。其一般形式为:apply(X,MARGIN,FUN,.)其中,X为一个数组,MARGIN为固定不变的维,FUN为用来计算的函数。,实际上apply()函数可以用于任意维的数组,函数FUN可以接收任意一个向量或数组作为其第一变量。,例、对矩阵的列排序aa,1,21,432,973,12apply(a,2,sort),1,21,122,433,97,apply(a,1,sort),1,2,31,3712,492t(apply(a,1,sort),1,21,342,793,12,第六章数据列表和数据单,数据列表(list)是R语言的基本数据结构,数据列表中可以包含多种类型的数据结构,这些数据结构可以按照一定顺序构造一种数据表。,简单来讲,数据列表是一组数据元素的集合,这些数据元素可以是不同的数据结构,比如各种类型的向量,当然数据列表中也可以包含数据列表。,例:用list()函数构造家庭成员信息。FamilyInfoFamilyInfo,在R语言的内部,数据列表的每个元素按定义的顺序都有一个编号,所以我们可以通过这个编号获取相应的元素。例一、获取child.ageFamilyInfo41137注:.是一个操作符号,用来获取数据列表中的某个元素。例二、用length()函数获取元素个数length(FamilyInfo)14例三、通过名字获取相应元素FamilyInfo$child.ages1137例四、采用名字访问元素FamilyInfono.children13,在R语言中,也可以用Component_name元素名的略写形式访问数据列表中的元素。但是会在一定程度上影响程序的可读性。,我们可以使用list()函数,将各种对象构造成一个数据列表,基本形式:list(name_1=object1,name_2=object2,name_n=objectn),将n个已有的对象(object1,object2,object3,objectn)构造成一个数据列表并分别命名为name_1,name_2,name_3,name_n。如果不对这些元素对象命名,也可以通过元素编号操作相应元素。注:生成数据列表时,有些已有的对象通过拷贝值,形成数据列表的各个元素,所以当我们修正数据列表中的元素时,并不影响原对象中的数据。,6.3数据列表操作,6.3.1长度扩展R语言可以直接对数据列表进行长度的扩展。例:,6.3.2合并数据列表,采用c()函数可以进行数据列表的合并。如果c()中包含一个或者多个数据列表,那么形成的结果也是一个数据列表,并且按照c()中各参数的顺序形成数据列表中的各个元素。例:新生成数据列表FamilyBirthday,包括家庭成员的生日信息。并将FamilyInfo,FamilyBirthday合并成一个Family数据列表FamilyBirthdayc(FamilyInfo,FamilyBirthday)-FamilyFamily注:c()函数按照向量读取各个对象,按照向量合并成新的数据列表,所以原对象中的一些数据会丧失,比如dim属性。,6.4数据单,数据单(DateFrame)是一种特殊的数据列表,其CLASS为data.frame。数据单扩展了数据列表的一些功能,同时也有一些限制,主要包括:(1)数据单中各个元素为各种向量、分组因子、数字矩阵、数据列表或者其他的数据单;(2)数字矩阵、数据列表和数据单中可以有各种参数。比如,列、元素和变量等;(3)作为变量的向量在数据单中必须有相同的长度,数字矩阵必须有相同的维度。数据单的主要用途是可以作为一个矩阵,这个矩阵可以有列或者其他的各种模式和属性。它可以按照矩阵的形式显示数据,也可以通过其中的行或者列操作其中的数据。,6.4.1构造数据单,例:将TEAM,NAME,WORKTIME形成一个数据单data.frame(TeamName=TEAM,TeamMemberName=NAME,Worktime=WORKTIME)-Team另外一个方法是用as.data.frame()函数将满足要求的数据列表直接形成数据单。最常用的方法是用read.table()直接从文件构造一个数据单。,TEAM=c(BATCH,BATCH,BATCH,BATCH,ONLINE,ONLINE,ONLINE,ONLINE,ONLINE,ONLINE,CLIENT,CLIENT,CLIENT,CLIENT,CLIENT)WORKTIME=c(135,121,87,63,36,73,107,43,5,5,112,16,99,14,111)NAME=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15),6.4.2操作数据单,R语言中的attach(),detach()函数可以让我们暂时直接使用数据列表和数据单中的各个元素的名字操作相关的数据,这样我们就不必采用list$component_name的方式操作相应数据了。,例一、直接使用数据列表和数据单中的各个元素的名字操作相关的数据attach(TEAM)WorktimeWorktimeTeam$Worktime注:采用这种方法并没有改变Team中的数据。例二、直接改变数据列表中的数据Team$WorktimeTeam$Worktime注:可以使用detach(list_name)清楚这些对象。,在R语言中的数据保存在工作空间(workspace)中,可以使用search()获取并跟踪当前的工作空间。search()1.GlobalEnvpackage:statspackage:graphics4package:grDevicespackage:utilspackage:datasets7package:methodsAutoloadspackage:base其中.GlobalEnv为工作空间。当我们执行attach()函数的时候,会产生一个暂时的空间。可以使用ls()查看其中内容。例:attach(Team)search()ls(2)#或者ls(Team),谢谢!,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!