R-4因子、列表、数据框及输入输出

上传人:平*** 文档编号:10588210 上传时间:2017-08-13 格式:PPT 页数:39 大小:1.88MB
返回 下载 相关 举报
R-4因子、列表、数据框及输入输出_第1页
第1页 / 共39页
R-4因子、列表、数据框及输入输出_第2页
第2页 / 共39页
R-4因子、列表、数据框及输入输出_第3页
第3页 / 共39页
R-4因子、列表、数据框及输入输出_第4页
第4页 / 共39页
R-4因子、列表、数据框及输入输出_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《R-4因子、列表、数据框及输入输出》由会员分享,可在线阅读,更多相关《R-4因子、列表、数据框及输入输出(39页珍藏版)》请在金锄头文库上搜索。

1、第四讲 R的数据结构(二)因子、列表、数据框,目的:,学习R中离散变量、混合数据的表示方法,内容:,数据表示方法 实例 作业,因子(factor)和有序因子,统计中的变量重要类别 连续: 区间变量 离散: 名义变量、有序变量区间变量取连续的数值,可以求和、算平均等。名义变量和有序变量取离散值,既可用数值表示也可取字符型值,其具体数值没有数量意义,不能用于加减乘除计算而只能用来分类或者计数。名义变量比如性别、省份、职业,有序变量比如班级名次、质量等级等。因为离散变量有各种不同表示方法,在R中为统一起见使用因子(factor)来表示这种分类变量。还提供了有序因子(ordered factor)来表

2、示有序变量。,因子是一种特殊的字符型向量,其中每一个元素取一组离散值中的一个,而因子对象有一个特殊属性levels表示这组离散值(用字符串表示)。例如: x y y 1 男 女 男 男 女 Levels: 男 女,函数factor()用来把一个向量编码成为一个因子。一般形式为:factor(x, levels = sort(unique(x), na.last = TRUE), labels, exclude = NA, ordered = FALSE),可以自行指定各离散取值水平(levels),不指定时由x的不同值来求得。labels可以用来指定各水平的标签,不指定时用各离散取值的对应字符

3、串。exclude参数用来指定要转换为缺失值(NA)的元素值集合。如果指定了levels,则因子的第i个元素当它等于水平中第j个时元素值取“j”,如果它的值没有出现在levels中则对应因子元素值取NA。ordered取真值时表示因子水平是有次序的(按编码次序)。可以用is.factor()检验对象是否因子,用as.factor()把一个向量转换成一个因子。, x y y1 男 女 男 男 女 Levels: 男 女, x y y1 男 女 男 男 女 Levels: 男 女,因子的基本统计是频数统计,用函数table()来计数。 例如, sex res.tab res.tab 男 女 3 2

4、 表示男性3人,女性2人。table()的结果是一个带元素名的向 量,元素名为因子水平,元素值为该水平出现的频数。R的结果除了可以显示外,本身都是R对象(如这里的向量结果),可以很方便地进一步处理。可以用两个或多个因子进行交叉分类。比如,性别(sex)和职业(job)交叉分组可以用table(sex, job)来统计每一交叉类的频数,结果为一个矩阵,矩阵带有行名和列名,分别为两个因子的各水平名。,因子可以用来作为另外的同长度变量的分类变量。比如,假设上面的sex是5个学生的性别,而 h table(h, sex) sexh 男 女 159 0 1 165 1 0 168 1 0 170 0 1

5、 172 1 0 tapply(h, sex, mean) #可以求按性别分类的身高平均值。 男 女 168.3333 164.5000,列表(list)定义,列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可以是任意对象,不同元素不必是同一类型。元素本身允许是其它复杂数据类型,比如,列表的一个元素也允许是列表。列表元素用“列表名下标”的格式引用。但是,列表不同于向量,我们每次只能引用一个元素,如rec1:2的用法是不允许的。 注意:“列表名下标”或“列表名下标范围”的用法也是合法的,但其意义与用两重括号的记法完全不同,两重记号取出列表的一个元素,结果与该元素类型相同,

6、如果使用一重括号,则结果是列表的一个子列表(结果类型仍为列表)。, rec = list(name=李明, age=30, scores=c(85, 76, 90) rec $name 1 李明 $age 1 30 $scores 1 85 76 90, rec1 $name 1 李明 rec1 1 李明 rec2 $age 1 30 rec2 1 30, rec3 $scores 1 85 76 90 rec3 1 85 76 90 rec31:21 85 76mode(rec1)1 listmode(rec1)1 character,在定义列表时如果指定了元素的名字(如rec中的name,

7、age,scores),则引用列表元素还可以用它的名字作为下标,格式为“列表名元素名”,如: recage 1 30 另一种格式是“列表名$元素名”,如: rec$age 1 30 其中“元素名”可以简写到与其它元素名能够区分的最短程度,比如“rec$s”可以代表 “rec$score”。 这种写法方便了交互运行,编写程序时一般不用简写,以免降低了程序的可读性。,使用元素名的引用方法可以让我们不必记住某一个下标代表那一个元素,而直接用易记的元素名来引用元素。事实上,已知向量和矩阵都可以指定元素名、行名、列名。定义列表使用list()函数,每一个自变量变成列表的一个元素,自变量可以用“名字值”的

8、方式给出,即给出列表元素名。自变量的值被复制到列表元素中,自变量如果是变量并不会与该列表元素建立关系(改变该列表元素不会改变自变量的值)。(例见后),修改列表,列表的元素可以修改,只要把元素引用赋值即可。 如: rec$age rec$age rec$sex rec6 rec, rec$sex rec6 rec,$name 1 李明 $age 1 30 $scores 1 85 76 90 $sex 1 男 5 NULL 6 1 161, sex rec1 rec1rec11= 女rec1sex,第五号元素因为没有定义所以其值是“NULL”,这是空对象的记号。如果rec是一个向量,则其空元素为

9、“NA”,这是缺失值的记号。从这里我们也可以体会“NULL”与“NA”的区别。几个列表可以用连接函数c()连接起来,结果仍为一个列表,其元素为各自变量的列表元素。如: list.ABC list.A = list(name=李明, age=30, scores=c(85, 76, 90) list.B = list(name=张三, age=27, scores=c(87, 91, 84) list.C = list(name=王五, age=28, scores=c(91, 90, 89) list.ABC list.ABC,$name1 李明$age1 30$scores1 85 76 9

10、0$name1 张三$age1 27$scores1 87 91 84$name1 王五$age1 28$scores1 91 90 89,几个返回列表的函数,列表的重要作用是把相关的若干数据保存在一个数据对象中,这样在编写函数时我们就可以返回这样一个包含多项输出的列表。因为函数的返回结果可以完整地存放在一个列表中,我们可以继续对得到的结果进行分析,这是R语言比SAS灵活的一个地方。下面给出几个返回列表的例子。,一、特征值和特征向量函数eigen(x)对对称矩阵x计算其特征值和特征向量,返回结果为一个列表,列表的两个成员(元素)为values和vectors。例如: ev ev $values

11、 1 1.400000e+01 9.176554e-16 -1.023391e-15 $vectors ,1 ,2 ,3 1, -0.2672612 0.6067775 0.7485937 2, -0.5345225 0.5530299 -0.6390960 3, -0.8017837 -0.5709457 0.1765328特征向量按矩阵存放,每一列为一个特征向量。,二、奇异值分解及行列式svd()函数进行奇异值分解自学,三、最小二乘拟合与QR分解函数lsfit(x,y)返回最小二乘拟合的结果。最小二乘的模型为线性模型 lsfit(x,y)的第一个参数x为模型中的设计阵,第二个参数y为模型中

12、的因变量y(可以是一个向量也可以是一个矩阵),返回一个列表,成员coefficients为上面模型的最小二乘系数,成员residuals为拟合残差,成员intercept用来指示是否有截距项,成员qr为设计阵 的QR分解,它本身又是一个列表。,simu.1 - function(n, p,trueb) x -matrix(rnorm(n*p),n,p) y -x%*%trueb+rnorm(n) lsfit(x,y)#Example:n - 100p - 3trueb x y y$qr ,1 ,2 ,31, -8.1240384 -9.6011363 -1.107823e+012, 0.4923660 0.9045340 1.809068e+003, 0.8616404 0.9954736 -2.220446e-16$rank1 2$qraux1 1.123091e+00 1.095039e+00 2.220446e-16$pivot1 1 2 3attr(,class)1 qr,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号