R软件及统计分析因子列表数据框及输入输出

上传人:油条 文档编号:48449052 上传时间:2018-07-15 格式:PPT 页数:46 大小:424.50KB
返回 下载 相关 举报
R软件及统计分析因子列表数据框及输入输出_第1页
第1页 / 共46页
R软件及统计分析因子列表数据框及输入输出_第2页
第2页 / 共46页
R软件及统计分析因子列表数据框及输入输出_第3页
第3页 / 共46页
R软件及统计分析因子列表数据框及输入输出_第4页
第4页 / 共46页
R软件及统计分析因子列表数据框及输入输出_第5页
第5页 / 共46页
点击查看更多>>
资源描述

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

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

2、tor)来表示有序变量。 因子是一种特殊的字符型向量,其中每一个元素 取一组离散值中的一个,而因子对象有一个特殊 属性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=c(1,0,1,1,0) y=factor(x,levels=sort(unique(x),decreasing=T),l abels=c(“男“, “女“),exclude=NA,orde

4、r=F) y 1 男 女 男 男 女Levels: 男 女 x=c(1,0,1,1,0,2) y=factor(x,levels=c(1,0), labels=c(“男“, “女“),exclude=NA,order=F) y 1 男 女 男 男 女 Levels: 男 女 因子的基本统计是频数统计,用函数table()来计数。例如, sex = factor(c(“男“, “女“, “男“, “男“, “女“) res.tab res.tab 男 女 3 2表示男性3人,女性2人。table()的结果是一个带元素名的向量,元素名为因子水平,元素值为该水平出现的频数。 S的结果除了可以显示外,

5、本身都是S对象(如这里的向量 结果),可以很方便地进一步处理。 可以用两个或多个因子进行交叉分类。比如,性别(sex )和职业(job)交叉分组可以用table(sex, job)来统计每一 交叉类的频数,结果为一个矩阵,矩阵带有行名和列名, 分别为两个因子的各水平名。 因子可以用来作为另外的同长度变量的分类变 量。比如,假设上面的sex是5个学生的性别, 而 h tapply(h, sex, mean)可以求按性别分类的身高平均值。 这样用一个等长的因子向量对一个数值向量分 组的办法叫做不规则数组(ragged array)。后 面我们还可以看到更多的因子的应用。列表(list)定义 列表是

6、一种特别的对象集合,它的元素也由序号(下标 )区分,但是各元素的类型可以是任意对象,不同元素 不必是同一类型。元素本身允许是其它复杂数据类型, 比如,列表的一个元素也允许是列表。 列表元素用“列表名下标”的格式引用。 但是,列表不同于向量,我们每次只能引用一个元素, 如rec1:2的用法是不允许的。 注意:“列表名下标”或“列表名下标范围”的用法也是 合法的,但其意义与用两重括号的记法完全不同,两重 记号取出列表的一个元素,结果与该元素类型相同,如 果使用一重括号,则结果是列表的一个子列表(结果类 型仍为列表)。 rec = list(name=“李明“, age=30, scores=c(8

7、5, 76, 90) rec$name1 “李明“$age1 30$scores1 85 76 90 rec1$name1 “李明“ rec11 “李明“ rec2$age1 30 rec21 30 rec3$scores1 85 76 90 rec31 85 76 90 rec31:2 1 85 76 mode(rec1) mode(rec1) 在定义列表时如果指定了元素的名字(如rec中的name ,age,scores),则引用列表元素还可以用它的名字作 为下标,格式为“列表名“元素名“”,如: rec“age“1 30 另一种格式是“列表名$元素名”,如: rec$age 1 30 其

8、中“元素名”可以简写到与其它元素名能够区分的最短 程度,比如“rec$s”可以代表 “rec$score”。这种写法方便了交互运行,编写程序时一般不用简写, 以免降低程序的可读性。 使用元素名的引用方法可以让我们不必记住某一 个下标代表那一个元素,而直接用易记的元素名 来引用元素。事实上,已知向量和矩阵都可以指 定元素名、行名、列名。 定义列表使用list()函数,每一个自变量变成列表 的一个元素,自变量可以用“名字值”的方式给 出,即给出列表元素名。 自变量的值被复制到列表元素中,自变量如果是 变量并不会与该列表元素建立关系(改变该列表 元素不会改变自变量的值)。(例见后)修改列表 列表的元

9、素可以修改,只要把元素引用赋值即可 。如: rec$age rec$age rec$sex rec6 rec rec$sex rec6 rec $name1 “李明“$age1 30$scores1 85 76 90$sex1 “男“5NULL61 161 sex rec1 rec1 rec11= “女“ rec1 sex 第五号元素因为没有定义所有其值是“NULL”, 这是空对象的记号。 如果rec是一个向量,则其空元素为“NA”,这是 缺失值的记号。从这里我们也可以体会“NULL” 与“NA”的区别。 几个列表可以用连接函数c()连接起来,结果仍为 一个列表,其元素为各自变量的列表元素。如

10、: list.ABC ev=eigen(1:3)%o%(1:3) ev$values1 1.400000e+01 9.176554e-16 -1.023391e-15$vectors,1 ,2 ,31, -0.2672612 0.6067775 0.74859372, -0.5345225 0.5530299 -0.63909603, -0.8017837 -0.5709457 0.1765328 特征向量按矩阵存放,每一列为一个特征向量。二、奇异值分解及行列式 svd()函数进行奇异值分解 自学三、最小二乘拟合与QR分解 函数lsfit(x,y)返回最小二乘拟合的结果。最小二乘的 模型为线性

11、模型 lsfit(x,y)的第一个参数x为模型中的设计阵 ,第二个 参数y为模型中的因变量y(可以是一个向量也可以是 一个矩阵),返回一个列表,成员coefficients为上面 模型的最小二乘系数,成员residuals为拟合残差,成 员intercept用来指示是否有截距项,成员qr为设计阵 的QR分解,它本身又是一个列表。三、最小二乘拟合与QR分解 关于最小二乘拟合还可参见ls.diag() 函数(查看帮助) 。 函数qr(x)返回x的QR分解结果。矩阵X的QR分解 为X=Q*R ,Q为对角线元素都等于1的下三角阵 ,R为上三角阵。 函数结果为一个列表,成员qr 为一个矩阵,其上 三角部

12、分(包括对角线)分解的R,其下三角部 分(不包括对角线)为分解的Q。其它成员为一 些辅助信息。 x=rbind(c(1,2,3),c(4,5,6),c(7,8,9) y=qr(x) y qr.R(y) qr.Q(y) qr.Q(y)%*%qr.R(y) x=rbind(c(1,2,3),c(4,5,6),c(7,8,9) y=qr(x) y $qr,1 ,2 ,3 1, -8.1240384 -9.6011363 -1.107823e+01 2, 0.4923660 0.9045340 1.809068e+00 3, 0.8616404 0.9954736 -2.220446e-16 $ran

13、k 1 2 $qraux 1 1.123091e+00 1.095039e+00 2.220446e-16 $pivot 1 1 2 3 attr(,“class“) 1 “qr“ qr.R(y),1 ,2 ,3 1, -8.124038 -9.601136 -1.107823e+01 2, 0.000000 0.904534 1.809068e+00 3, 0.000000 0.000000 -2.220446e-16 qr.Q(y),1 ,2 ,3 1, -0.1230915 0.9045340 0.4082483 2, -0.4923660 0.3015113 -0.8164966 3,

14、 -0.8616404 -0.3015113 0.4082483 qr.Q(y)%*%qr.R(y),1 ,2 ,3 1, 1 2 3 2, 4 5 6 3, 7 8 9数据框(data.frame) 数据框是S中类似SAS数据集的一种数据结构。它通常 是矩阵形式的数据,但矩阵各列可以是不同类型的。数 据框每列是一个变量,每行是一个样品的观测值。 数据框有更一般的定义。它是一种特殊的列表对象,有 一个值为“data.frame”的class 属性,各列表成员必须是 向量(数值型、字符型、逻辑型)、因子、数值型矩阵 、列表,或其它数据框。向量、因子成员为数据框提供 一个变量,如果向量非数值型则会被强制转换为因子, 而矩阵、列表、数据框这样的成员为新数据框提供了和 其列数、成员数、变量数相同个数的变量。作为数据框 变量的向量、因子或矩阵必须具有相同的长度(行数) 。 尽管如此,我们一般还是可以把数据框看作是一种推广 了的矩阵,它可以用矩阵形式显示,可以用对矩阵的下 标引用方法来引用其元素或子集。数据框生成 数据框可以用data.frame()函数生成,其用法与list()函数相同, 各自变量变成数据框的成分,自变量可以命名,成为变量名。 例如: d=data.frame(name=c(“赵“, “钱“, “孙“, “李“, “王“),age=c(20,21,22,21,2

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

当前位置:首页 > 行业资料 > 其它行业文档

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