![第三讲-因子列表数据框与数据读写_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-6/9/8b824dca-97c3-4db1-b305-878a5e193d85/8b824dca-97c3-4db1-b305-878a5e193d851.gif)
![第三讲-因子列表数据框与数据读写_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-6/9/8b824dca-97c3-4db1-b305-878a5e193d85/8b824dca-97c3-4db1-b305-878a5e193d852.gif)
![第三讲-因子列表数据框与数据读写_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-6/9/8b824dca-97c3-4db1-b305-878a5e193d85/8b824dca-97c3-4db1-b305-878a5e193d853.gif)
![第三讲-因子列表数据框与数据读写_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-6/9/8b824dca-97c3-4db1-b305-878a5e193d85/8b824dca-97c3-4db1-b305-878a5e193d854.gif)
![第三讲-因子列表数据框与数据读写_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-6/9/8b824dca-97c3-4db1-b305-878a5e193d85/8b824dca-97c3-4db1-b305-878a5e193d855.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、01020304050 -2-1012 Simple Use of Color In a Plot Just a Whisper of a Label -1.0-0.50.00.51.0 sin and cos Phase Angle sin Sepal.Length 2.03.04.0 7.5 2.03.04.0 Sepal.Width Petal.Length 1234567 7.5 1234567 Petal.Width Edgar Andersons Iris Data Math can be beautiful
2、 . cosr 2er 6 实验内容 1、数据表示方法 2、应用实例 3、实验作业 学习R语言中离散变量、混合数据的表示方法 实验目的 因子、列表、数据框与数据的读 写 因子(factor)和有序因子 统计中的变量重要类别: 区间变量和名义变量、有序变量。 区间变量取连续的数值,可以进行求和、平均等 运算。 名义变量和有序变量取离散值,既可用数值代表 也可用字符型值,其具体数值没有数量意义,不 能用于加减乘除计算而只能用来分类或者计数。 名义变量比如性别、省份、职业,有序变量比如 班级名次、质量等级。 因为离散变量有各种不同表示方法,在R中为统 一起见使用因子(factor)来表示这种分类变量
3、。还 提供了有序因子(ordered factor)来表示有序变量 。 因子是一种特殊的字符型向量,其中每一个元素 取一组离散值中的一个,而因子对象有一个特殊 属性levels表示这组离散值(用字符串表示)。 例如: x y y 1 男 女 男 男 女 Levels: 男 女 函数factor()用来把一个向量编码成为一个因子 。 一般形式为: factor(x, levels = sort(unique(x), na.last = TRUE), labels, exclude = NA, ordered = FALSE) 可以自行指定各离散取值水平(levels),不指 定时由x的不同值来求
4、得。 labels可以用来指定各水平的标签,不指定时用 各离散取值的对应字符串。 exclude参数用来指定要转换为缺失值(NA)的 元素值集合。 ordered取真值时表示因子水平(Levels)是有次 序的。 可以用is.factor()检验对象是否因子,用as.factor() 把一个向量转换成一个因子。 x y factor (x, order=T); 1 4 2 2 3 Levels: 2 3 factor(x,label=c(red, black,white) 1 white red red black # red代表2,black 代表3, white代 表4 Levels: r
5、ed black white factor(x,label=c(red,black,white),order=T ); 1 white red red black Levels: red black white # 234 故有 red black factor(x, exclude=3,order=T); 1 4 2 2 # exclude的那个值显示为 Levels: 2 xy=factor(x,levels=sort(unique(x),decreasing=T),l abels=c(男, 女), order=F); y 1 男 女 男 男 女 Levels: 男 女 x y=facto
6、r(x,levels=c(1,0), labels=c(男, 女), order=F) y 1 男 女 男 男 女 Levels: 男 女 用函数levels()可以得到因子的水平 levels(y); 1 男 女 因子的基本统计是频数统计,用函数table()来 计数。例如, sex = factor(c(男, 女, 男, 男, 女) ; res.tab res.tab 1 男 女 3 2 # 表示男性3人,女性2人。table()的结果 是一个带元素名的向量,元素名为因子水平, 元素值为该水平的出现频数。 mode(res.tab); 1 numeric 可以用两个或多个因子进行交叉分类。
7、比如 ,性别(sex)和职业(job)交叉分组可以 用table(sex, job)来统计每一交叉类的频数, 结果为一个矩阵,矩阵带有行名和列名,分 别为两个因子的各水平名。 job=factor(c(teacher, worker,worker, worker,teacher); sex = factor(c(男, 女, 男, 男, 女); table(sex, job); job sex teacher worker 男 1 2 女 1 1 age=factor(c(old,old, young,old,young); table(sex, job, age); 因子可以用来作为另外的同长
8、度变量的分类变 量。比如,假设sex是5个学生的性别,h是他们 的身高向来 sex = factor(c(男, 女, 男, 男, 女) ; h tapply(h, sex, mean); 男 女 168.3333 164.5000 可以求按性别分类的身高平均值。 这样用一个等长的因子向量对一个数值向量分 组的办法叫做不规则数组。 函数tapply的基本用法为: tapply (X, INDEX, FUN = NULL, ., simplify = TRUE ); X是向量;INDEX是和X同等长度的因 子,FUN是要执行的函数,simplify取默认 的TRUE,返回一个标量,取FALSE时,
9、返 回一个列表list。 注意比较: tapply(h, sex, mean, simplify=F); $男 1 168.3333 $女 1 164.5 因子还可以用gl()函数来产生,其用法为: gl(n, k, length=n*k, labels=1:n, ordered=FALSE) n是水平数; k为重复的次数; length是结果的 长度; labels是一个n维向量,表示因子的水平 ;ordered是逻辑变量,表示是否为有序因子, 默认值为FALSE。 gl(3,5) 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 Levels: 1 2 3 gl(3,1,9)
10、 1 1 2 3 1 2 3 1 2 3 Levels: 1 2 3 gl(3,1,8,labels=c(red,blue,white) 1 red blue white red blue white red blue Levels: red blue white 列表(list)定义 列表是一种特别的对象集合,它的元素也由序号 (下标)区分,但是各元素的类型可以是任意对 象,不同元素不必是同一类型。元素本身允许是 其它复杂数据类型,比如,列表的一个元素也允 许是列表。 列表元素用“列表名下标”的格式引用。 但是,列表不同于向量,我们每次只能引用一个 元素,如rec1:2的用法是不允许的。 注
11、意:“列表名下标”或“列表名下标范围” 的用法也是合法的,但其意义与用两重括号的记 法完全不同,两重记号取出列表的一个元素,结 果与该元素类型相同,如果使用一重括号,则结 果是列表的一个子列表(结果类型仍为列表)。 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:2
12、1 85 76 mode(rec1) 1 list mode(rec1) 1 character 在定义列表时如果指定了元素的名字(如rec中 的name,age,scores),则引用列表元素还可以 用它的名字作为下标,格式为“列表名元素名 ”,如: recage 1 30 另一种格式是“列表名$元素名”,如: rec$age 1 30 其中“元素名”可以简写到与其它元素名能够 区分的最短程度,比如“rec$s”可以代表 “rec$score”。 这种写法方便了交互运行,编写程序时一般不 用简写,以免降低程序的可读性。 使用元素名的引用方法可以让我们不必记住某一 个下标代表哪一个元素,而直接
13、用易记的元素名 来引用元素。 定义列表使用list()函数,每一个自变量变成列表 的一个元素,自变量可以用“名字值”的方式 给出,即给出列表元素名。 构造列表的一般格式为 list(name1=对象1, name2=对象2,); 练习:构建下面的列表,尝试调用各种列表元素 的各个方法 family rec$age rec$age rec$sex rec6 rec 第五号元素因为没有定义所有其值是“NULL”, 这是空对象的记号。 如果rec是一个向量,则其空元素为“NA”,这是 缺失值的记号。从这里我们也可以体会“NULL” 与“NA”的区别。 几个列表可以用连接函数c()连接起来,结果仍为
14、一个列表,其元素为各自变量的列表元素。如: list.ABC rec1= list(name=“李雷, age=30, scores=c(76, 90) rec2= list(name=“韩美美”, age=28, scores=c(20, 25) rec3= list(name=“Lucy”, age=28, scores=c(30, 50) rec4= list(name=“Lily”, age=29, scores=c(44, 66) rec.all rec.all$name 1 “李雷” rec.allname 1 李雷“ rec.allname $name 1 李雷 rec.all4
15、 $name 1 韩美美 rec.all4 1“韩美美” 数据框(data.frame) 数据框是R的一种数据结构。它通常是矩阵形式 的数据,但矩阵各列可以是不同类型的。数据框 每列是一个变量,每行是一个观测。 数据框有更一般的定义。它是一种特殊的列表对 象各列表成员必须是向量(数值型、字符型、逻 辑型)、因子、数值型矩阵、列表,或其它数据 框。向量、因子成员为数据框提供一个变量,如 果向量非数值型则会被强制转换为因子,而矩阵 、列表、数据框这样的成员为新数据框提供了和 其列数、成员数、变量数相同个数的变量。作为 数据框变量的向量、因子或矩阵必须具有相同的 长度(行数)。 尽管如此,我们一般还
16、是可以把数据框看作是一 种推广了的矩阵,它可以用矩阵形式显示,可以 用对矩阵的下标引用方法来引用其元素或子集。 数据框生成 数据框可以用data.frame()函数生成,其用法与 list()函数相同,各自变量变成数据框的成分, 自变量可以命名,成为变量名。例如: d=data.frame(name=c(赵, 钱, 孙, 李, 王),age=c(20,21,22,21,20),height= c(170,171,175,165,181),gender=c(男, 女, 男 , 女, 男 ) d d name age height gender 1 赵 20 170 男 2 钱 21 171 女
17、3 孙 22 175 男 4 李 21 165 女 5 王 20 181 男 d1 name 1 赵 2 钱 3 孙 4 李 5 王 d1 1 赵 钱 孙 李 王 Levels: 李 钱 孙 王 赵 # 可见,d里的非数 值向量已经变成因 子了 d22:3 1 21 22 如果一个列表的各个成分满足数据框成 分的要求,它可以用as.data.frame()函数 强制转换为数据框。比如,上面的d如果 先用list()函数定义成了一个列表,就可 以强制成为一个数据框。 d1 d2 x y y; V1 V2 V3 1 1 3 5 2 2 4 6 mode(x); 1 “numeric” mode(y
18、); 1“ list” #数据框的mode仍然是list 数据框引用 引用数据框元素的方法与引用矩阵元素的方法 相同,可以使用下标或下标向量,也可以使用 名字或名字向量。如d1:2, 2:3(第一二行的第 二三列对应的元素)。数据框的各变量也可以用 按列表引用(即用双括号 或$符号引用, 和 列表的引用方法一致,此处不再赘述)。 数据框的变量名(列的名字)由属性names定义。 数据框的各行也可以定义名字,可以用 rownames属性定义。如: names(d) 1 name age height gender rownames(d) 1 1 2 3 4 5 table(d4) 1 男 女 3
19、 2 table(d4) #两种统计结果是一致的 1 男 女 3 2 tapply(d3,d4, mean) 1 男 女 175.3333 168.0000 d3/d2 1 8.500000 8.142857 7.954545 7.857143 9.050000 attach()函数 数据框的主要用途是保存统计建模需要的数据 。R的统计建模功能都需要以数据框为输入数 据。我们也可以把数据框当成一种矩阵来处理 。 在使用数据框的变量时可以用“数据框名$变 量名”的记法。但是,这样使用较麻烦,R提 供了attach()函数可以把数据框“连接”入当前 的名字空间。例如, attach(d) r d$
20、r d 为了取消连接,只要调用detach()(无参数即可 )。 列表与数据框的编辑 edit()函数可以用来编辑数据框 edit(d) d.new print(ABC, quote=F); 1 ABC print(ABC, quote=T); 1 ABC print()函数是一个通用函数,即它对不同的自变 量有不同的反应。对各种特殊对象如数组、模 型结果等都可以规定print的输出格式。 cat()函数也用来输出,但它可以把多个参数连接 起来再输出(具有paste()的功能)。例如: i =1; cat(i = , i, n) 注意使用cat()时要自己加上换行符“n”。它把各 项转换成字符
21、串,中间隔以空格连接起来,然后 显示。 如果要使用自定义的分隔符,可以用sep=参数, 例如: cat(c(AB, C), c(E, F), n, sep=“,) 1AB,C,E,F cat(c(AB, C), c(E, F), sep=“-) 1 AB-C-E-F cat()还可以指定一个参数file=给一个文件名, 可以把结果写到指定的文件中,如: cat(i = , 1, n, file=c:/work/result.txt) 如果指定的文件已经存在则原来内容被覆盖。 加上一个append=TRUE参数可以不覆盖原文件 而是在文件末尾附加,这很适用于运行中的结 果记录。 读数据文件 读入
22、纯的文本文件用read.table()或scan() read.table(file, header=F, sep=, s, s, skip=0 ) 其中file是读取的文件名;header表示第一行是 否作为变量名,默认值是FALSE;sep是数据分 隔符,默认是空格,可以根据实际的文档定义 分隔符;s和s分别定义了行和 列的名字,可以缺省;skip表示跳过的行数, 默认是0;其他还有很多可设置的参数,详见 帮助文件 。 forbes is.data.frame(forbes); 1 TRUE forbes scan()函数的基
23、本用法 若是直接从命令行输入数据 x x 1 1 2 2 若一个纯的文本文档,已经有一些数据,如15 个学生的体重数据的文本文档weight.txt 75.0 64.0 47.4 66.9 62.2 62.2 58.7 63.5 66.6 64.0 57.0 69.0 56.9 50.0 72.0 w h_w h_w $height 1 172.4 169.3 169.3 171.4 166.5 171.4 168.2 165.1 168.8 167.8 165.8 167.8 13 164.4 169.9 164.9 $weight 1 75.0 54.8 64.0 64.8 47.4 62.2 66.9 52.0 62.2 65.0 62.2 65.0 58.7 57.5 15 63.5 读取其他格式的文件 读取SPSS数据文件 read.spss(file.sav, to.data.frame=TRUE) 读取SAS数据文件 read.xport(file.xpt) # 读入以后是个数据框 读取excel数据文件 R里面没有提供直接读取excel数据文件的命令 ,Microsoft的文件背后究竟是个什么谁也不知 道。但可以调用RODBC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消费者对网红直播带货产品的信任度调查
- 《饮料与健康》(说课稿)皖教版四年级上册综合实践活动
- 现代办公环境下的健康饮食与运动习惯培养
- Unit 6 The Media Lesson 1 From Page to Screen 说课稿-2024-2025学年高中英语北师大版(2019)选择性必修第二册
- 2024-2025学年高中物理 第一章 功和功率 第3节 功率说课稿2 鲁科版必修2
- 13《人物描写一组》说课稿-2023-2024学年统编版五年级语文下册
- 2024-2025学年高中语文 第七单元 人与自然单元写作训练5 如何做到情景交融说课稿 新人教版必修上册
- 生产区域划分的科学依据定置管理实战分享
- 现代医院建筑的老旧结构加固方法探讨
- 环境因素对肿瘤患者睡眠的影响研究
- 2025年电力铁塔市场分析现状
- 2025-2030年中国清真食品行业运行状况及投资发展前景预测报告
- 广东省茂名市电白区2024-2025学年七年级上学期期末质量监测生物学试卷(含答案)
- 《教育强国建设规划纲要(2024-2035年)》全文
- 山东省滨州市2024-2025学年高二上学期期末地理试题( 含答案)
- 2025年河南洛阳市孟津区引进研究生学历人才50人历年高频重点提升(共500题)附带答案详解
- 2025年度军人军事秘密保护保密协议与信息安全风险评估合同3篇
- 蛋鸡生产饲养养殖培训课件
- 数字化转型中的职业能力重构
- 运用PDCA降低住院患者跌倒-坠床发生率
- 2025届高中数学一轮复习专练:椭圆(含解析)
评论
0/150
提交评论