第二章 创建数据集

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—创建数据集(上)的更多相关文章

  1. R语言实战读书笔记(二)创建数据集

    2.2.2 矩阵 matrix(vector,nrow,ncol,byrow,dimnames,char_vector_rownames,char_vector_colnames) 其中: byrow ...

  2. R语言实战读书笔记(三)图形初阶

    这篇简直是白写了,写到后面发现ggplot明显更好用 3.1 使用图形 attach(mtcars)plot(wt, mpg) #x轴wt,y轴pgabline(lm(mpg ~ wt)) #画线拟合 ...

  3. [读书笔记] R语言实战 (二) 创建数据集

    R中的数据结构:标量,向量,数组,数据框,列表 1. 向量:储存数值型,字符型,或者逻辑型数据的一维数组,用c()创建 **  R中没有标量,标量以单元素向量的形式出现 2. 矩阵:二维数组,和向量一 ...

  4. R语言实战(二) 创建数据集

    2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable),数据库分析师则称其为记录(record)和字段(field),数据 ...

  5. R语言实战读书笔记1—语言介绍

    第一章 语言介绍 1.1 典型的数据分析步骤 1.2 获取帮助 help.start() help("which") help.search("which") ...

  6. R语言实战读书笔记(四)基本数据管理

    4.2 创建新变量 几个运算符: ^或**:求幂 x%%y:求余 x%/%y:整数除 4.3 变量的重编码 with(): within():可以修改数据框 4.4 变量重命名 包reshape中有个 ...

  7. R语言实战读书笔记(五)高级数据管理

    5.2.1 数据函数 abs: sqrt: ceiling:求不小于x的最小整数 floor:求不大于x的最大整数 trunc:向0的方向截取x中的整数部分 round:将x舍入为指定位的小数 sig ...

  8. R语言实战读书笔记(十三)广义线性模型

    # 婚外情数据集 data(Affairs, package = "AER") summary(Affairs) table(Affairs$affairs) # 用二值变量,是或 ...

  9. R语言实战读书笔记(八)回归

    简单线性:用一个量化验的解释变量预测一个量化的响应变量 多项式:用一个量化的解决变量预测一个量化的响应变量,模型的关系是n阶多项式 多元线性:用两个或多个量化的解释变量预测一个量化的响应变量 多变量: ...

随机推荐

  1. STL容器迭代器失效分析

    连续内存序列容器(vector, string, deque) 对于连续内存序列STL容器,例如vector,string,deque,删除当前iterator会使得后面所有的iterator都失效, ...

  2. 高效渲染css

    译自:http://css-tricks.com/efficiently-rendering-css/ 无可否认我并不经常考虑这个问题… 我们书写的CSS的效率如何,浏览器渲染它的速度如何? 浏览器的 ...

  3. css规范大全

    一.文件规范 1.文件均归档至约定的目录中 所有的CSS分为两大类:通用类和业务类.通用的CSS文件,放在如下目录中: 基本样式库 /css/core 通用UI元素样式库 /css/lib JS组件相 ...

  4. 使用Git上传本地项目代码到github

    前提:(1)ssh密钥(让本地与git链接) &  (2)装好gitbash 1.git中创建好库 2.文件夹中输入:git init (出现隐藏的.git文件) 3.git remote a ...

  5. (function($){...})(jQuery)是什么意思

    这里实际上是匿名函数 function(arg){...} 这就定义了一个匿名函数,参数为arg 而调用函数 时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (fun ...

  6. javaSE第二天

    第二天    7 1:关键字(掌握)    7 2:标识符(掌握)    7 (1)就是给类,接口,方法,变量等起名字的字符序列    7 (2)组成规则:    7 (3)注意事项:    8 (4 ...

  7. POJ C++程序设计 编程题#1 编程作业—运算符重载

    编程题 #2 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面的MyIn ...

  8. CentOS 6.x版本升级Mysql

    首先确定一下自己的DNS  vi /etc/resolv.conf    我一般为114.114.114.114 #-----------------------------CentOS 6.x版本升 ...

  9. java8新特性笔记

    1.forEach(),遍历数据结构中的元素,括号内可以带一个闭包的方法 2.双冒号用法:forEach(this::doSchedule),如果运行环境是闭包,java允许使用双冒号的写法来直接调用 ...

  10. [Linux]Nginx + Node.js + PM2 + MongoDb + (Memcached) Part I

    运行环境: 在本地的VirtualBox下运行的Ubuntu 14.04 LTS  0. 查看一下Server的IP地址 ifconfig 我的Server IP是192.168.0.108 1. 安 ...