R语言实战读书笔记2—创建数据集(上)
第二章 创建数据集
2.1 数据集的概念
不同的行业对于数据集的行和列叫法不同。统计学家称它们为观测(observation)和变量(variable) ,数据库分析师则称其为记录(record)和字段(field) ,数据挖掘/机器学习学科的研究者则把它们叫做示例(example)和属性(attribute) 。如表2.1所示
在表2-1所示的数据集中, PatientID 是行/实例标识符, AdmDate 是日期型变量, Age 是连续型变量, Diabetes 是名义型变量, Status 是有序型变量。
R可以处理的数据类型(模式)包括数值型、字符型、逻辑型( TRUE / FALSE ) 、复数型(虚数)和原生型(字节) 。在R中, PatientID 、 AdmDate 和 Age 将为数值型变量,而 Diabetes 和Status 则为字符型变量。
2.2 数据结构
2.2.1 标量
标量是只含一个元素的向量,它们用于保存常量。
2.2.2 向量
向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数 c() 可用来创建向量。
这里, a 是数值型向量, b 是字符型向量,而 c 是逻辑型向量。
注意,单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型) 。同一向量中无法混杂不同模式的数据。
2.2.3 矩阵
矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型) 。可通过函数 matrix 创建矩阵。一般使用格式为:
其中 vector 包含了矩阵的元素, nrow 和 ncol 用以指定行和列的维数, dimnames 包含了可选的、以字符型向量表示的行名和列名。选项 byrow 则表明矩阵应当按行填充( byrow=TRUE )还是按列填充( byrow=FALSE ) ,默认情况下按列填充。代码清单2-1中的代码演示了 matrix 函数的用法。
2.2.4 数组
数组(array)与矩阵类似,但是维度可以大于2。数组可通过 array 函数创建,形式如下:
其中 vector 包含了数组中的数据, dimensions 是一个数值型向量, 给出了各个维度下标的最大值,而 dimnames 是可选的、各维度名称标签的列表。代码清单2-3给出了一个创建三维(2×3×4)数值型数组的示例。
2.2.5 数据框
由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更为一般。数据框将是你在R中最常处理的数据结构。
数据框可通过函数 data.frame() 创建:
其中的列向量 col1, col2, col3,… 可为任何类型(如字符型、数值型或逻辑型) 。每一列的名称可由函数 names 指定。
2.2.6 因子
变量可归结为名义型、有序型或连续型变量。糖尿病类型 Diabetes ( Type1 、 Type2 )是名义型变量的一例。有序型变量表示一种顺序关系,而非数量关系。病情 Status ( poor , improved , excellent )是顺序型变量的一个上佳示例。连续型变量可以呈现为某个范围内的任意值,并同时表示了顺序和数量。年龄 Age 就是一个连续型变量,它能够表示像14.5或22.8这样的值以及其间的其他任意值。
类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor) 。
函数 factor() 以一个整数向量的形式存储类别值,整数的取值范围是[1... k ](其中k 是名义型变量中唯一值的个数) ,同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。
要表示有序型变量,需要为函数 factor() 指定参数 ordered=TRUE 。
2.2.7 列表
列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下。例如,某个列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合。
其中的对象可以是目前为止讲到的任何结构。
补充
attach() 、 detach() 和 with()
以R中的mtcars数据集为例子
函数 attach() 可将数据框添加到R的搜索路径中。R在遇到一个变量名以后,将检查搜索路径中的数据框,以定位到这个变量。
函数 detach() 将数据框从搜索路径中移除。 值得注意的是, detach() 并不会对数据框本身做任何处理。
除此之外,另一种方式是使用函数 with()。在这种情况下,大括号 {} 之间的语句都针对数据框 mtcars 执行,这样就无须担心名称冲突了。如果仅有一条语句(例如 summary(mpg) ) ,那么大括号 {} 可以省略。函数 with() 的局限性在于,赋值仅在此函数的括号内生效。
如果需要创建在 with() 结构以外存在的对象,使用特殊赋值符 <<- 替代标准赋值符( <- )即可,它可将对象保存到 with() 之外的全局环境中。
R语言实战读书笔记2—创建数据集(上)的更多相关文章
- R语言实战读书笔记(二)创建数据集
2.2.2 矩阵 matrix(vector,nrow,ncol,byrow,dimnames,char_vector_rownames,char_vector_colnames) 其中: byrow ...
- R语言实战读书笔记(三)图形初阶
这篇简直是白写了,写到后面发现ggplot明显更好用 3.1 使用图形 attach(mtcars)plot(wt, mpg) #x轴wt,y轴pgabline(lm(mpg ~ wt)) #画线拟合 ...
- [读书笔记] R语言实战 (二) 创建数据集
R中的数据结构:标量,向量,数组,数据框,列表 1. 向量:储存数值型,字符型,或者逻辑型数据的一维数组,用c()创建 ** R中没有标量,标量以单元素向量的形式出现 2. 矩阵:二维数组,和向量一 ...
- R语言实战(二) 创建数据集
2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable),数据库分析师则称其为记录(record)和字段(field),数据 ...
- R语言实战读书笔记1—语言介绍
第一章 语言介绍 1.1 典型的数据分析步骤 1.2 获取帮助 help.start() help("which") help.search("which") ...
- R语言实战读书笔记(四)基本数据管理
4.2 创建新变量 几个运算符: ^或**:求幂 x%%y:求余 x%/%y:整数除 4.3 变量的重编码 with(): within():可以修改数据框 4.4 变量重命名 包reshape中有个 ...
- R语言实战读书笔记(五)高级数据管理
5.2.1 数据函数 abs: sqrt: ceiling:求不小于x的最小整数 floor:求不大于x的最大整数 trunc:向0的方向截取x中的整数部分 round:将x舍入为指定位的小数 sig ...
- R语言实战读书笔记(十三)广义线性模型
# 婚外情数据集 data(Affairs, package = "AER") summary(Affairs) table(Affairs$affairs) # 用二值变量,是或 ...
- R语言实战读书笔记(八)回归
简单线性:用一个量化验的解释变量预测一个量化的响应变量 多项式:用一个量化的解决变量预测一个量化的响应变量,模型的关系是n阶多项式 多元线性:用两个或多个量化的解释变量预测一个量化的响应变量 多变量: ...
随机推荐
- C#中List集合转换JSON
#region 将List<>转换为Json public string List2JSON(List<object> objlist, string classname) { ...
- Qt中QObject中的parent参数
今天写了一个小程序,验证了带参的构造函数中参数parent的作用. 在MainWindow中声明一个QDialog类型的指针,在MainWindow中对它进行初始化.我采用了两种初始化方式,一种是带参 ...
- Dede后台验证码不显示解决方法详解(dedecms 5.7)
今天朋友问我他本地与服务器上安装了dedecms5.7无法显示验证码,一般这种情况很少见,一般情况就是服务器设置问题,还有临时目录的权限问题 Dede后台验证码不显示或不正常分三种情况,下面来逐一分析 ...
- 008sudo用户管理
1.Sudo是Unix/Linux平台上一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的权利,让它们执行一些只有超级用户或其他特许用户才能完成的任务(主要体现为命令),比如,运行一些像mo ...
- SQL笔记-第一章,数据库入门
DBMS的分类DB2.Oracle.Microsoft SQL Server.Sybase SQLServer.Informix.MySQL数据库的结构元素库 database表 table列 col ...
- 用于MySql的SqlHelper
用于MySql的SqlHelper /// <summary> /// Title :MySqlHelper /// Author :WinterT /// Date :2015-1-8 ...
- Query for Component Path within PeopleSoft Portal
1) Run the below SQL to get the content reference name for your component ;-- Replace :1 with the c ...
- 利用js+canvas实现的时钟效果图
canvas+js时钟特效 运用js+canvas方面的知识完成一个时钟的效果图,再利用for循环实现指针的转动效果: <!--网页文档的声明--> <!doctype html&g ...
- Operation is not valid due to the current state of the object.
今天遇到一个asp.net的草郁闷的问题,看下截图 狂晕啊,在google上狂搜了一下,好在已经有大侠也遇到过这个问题了,先看下别人的解决办法吧 Operation is not valid due ...
- 如何保护java程序不被反编译
Java是一种 跨平台的.解释型语言 Java 源代码编译中间“字节码”存储于class文件中.Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如变量名.方法名 等.因此 ...