天天看点

《机器学习与R语言(原书第2版)》一2.2 用R管理数据

当处理大量数据集时,面临的挑战包括收集、准备和管理来自各种不同来源的数据。尽管通过学习后面章节中的真实世界的机器学习任务,我们会深入地涉及数据准备、数据清理和数据管理,但本节重点讲述基本的r数据导入和导出功能。

当你花费了很长时间把某个数据框转换成你所需要的数据格式时,你不必每次重新打开r会话从头开始重复前面的工作。要想把一种特定的数据结构保存到一个文件中,使它以后能重新载入或者把这种数据结构转移到另一个系统中,可以用save()函数。save()函数把r数据结构写到由file参数设定的位置。r数据文件有一个文件扩展名.rdata。

如果我们有3个对象x、y和z,你希望将它们保存在一个永久文件中。不管它们是向量、因子、列表或者数据框,可以用下面的命令把它们保存到名称为mydata.rdata的文件中:

《机器学习与R语言(原书第2版)》一2.2 用R管理数据

load()命令可以重新创建保存在以.rdata为扩展名的文件中的任何数据结构。为了载入保存在前面代码中的mydata.rdata文件,只需要输入:

《机器学习与R语言(原书第2版)》一2.2 用R管理数据

这将重新创建x、y和z数据结构。

要特别小心你正在载入的数据结构!你用load()命令正在导入的文件中所存储的所有数据结构都将载入你的工作区,即使它们会覆盖工作区中其他一些你正在使用的东西。

如果你需要立即结束当前的r会话,save.image()命令将会把你所有的会话写入一个叫作.rdata的文件中。默认情况下,r将在下次启动时寻找这个文件,上次r结束时的r会话将会重现,就像你离开r时一样。

在r会话工作一段时间后,可能积累了大量的数据结构。列表函数ls()返回一个内存中当前所有数据结构的一个向量。例如,如果你按照本章中的代码操作,那么ls()函数将返回:

《机器学习与R语言(原书第2版)》一2.2 用R管理数据

在退出会话时,r将自动从内存中删除这些数据结构,但是对于大的数据结构,你可能希望尽快释放内存。删除函数rm()就是用于删除数据结构。例如,为了删除m和subject1对象,简单地输入:

《机器学习与R语言(原书第2版)》一2.2 用R管理数据

也可以用一个由需要删除的对象名称构成的字符向量作为函数 rm()的参数。下面的命令清除整个r会话中的对象。

《机器学习与R语言(原书第2版)》一2.2 用R管理数据

在执行上述命令时必须特别小心,因为在对象删除之前没有提示。

公开的数据集通常存储在文本文件中。文本文件几乎可以在所有的计算机和操作系统中阅读,这种格式几乎全球通行。由于像microsoft excel这样的电子表格数据操作容易便捷,所以文本格式文件也能从这样的程序中导入或者导出。

表格数据文件(tabular或者table)采用矩阵形式的结构,这种形式数据的每一行表示一个案例,每个案例有相同数量的特征。每一行的特征值由一个预先定义的称为分隔符的符号来区分。通常情况下,表格数据文件的第一行给出数据每一列的名称。该行称为标题行。

最常用的表格文本文件格式可能是逗号分隔值(comma-separated value,csv)文件。根据名字可知,这种文件格式使用逗号作为分隔符。csv文件能在很多常用的应用程序内导入和导出。一个表示先前构建的医疗数据集的csv文件可能像下面这样存储:

《机器学习与R语言(原书第2版)》一2.2 用R管理数据

给定一个位于r工作目录中的命名为pt_data.csv的病人数据文件,可以使用read.csv()函数把这个文件载入r中:

《机器学习与R语言(原书第2版)》一2.2 用R管理数据

这个命令将把csv文件读入名为pt_data的数据框中。就像先前在构建数据框时那样,我们需要使用stringsasfactors = false参数来阻止r把所有的文本变量转换成因子。这个转换的步骤最好由你而不是由r来执行。

如果数据集在r工作目录之外,你要详细列出csv文件的完整路径(例如,当调用read.csv()函数时应该使用/path/to/mydata.csv。)

默认情况下,r假设csv文件包含一个标题行,标题行列出了数据集中特征的名字。如果一个csv文件没有标题行,那么需要指定选项header = false,就像下面的命令显示的那样,r用v1、v2等默认值来指定属性名:

《机器学习与R语言(原书第2版)》一2.2 用R管理数据

read.csv()函数是read.table()函数的一个特例。read.table()函数能读取具有多种不同格式的表格数据,包括其他的分隔形式,比如制表符分隔的值(tab-separated value,tsv)。要想了解更多关于read.table()函数族的信息,用命令?read.table来查询r的帮助页面。

要想把一个数据框保存成csv文件,需要使用write.csv()函数。如果数据框名是pt_data,只需要输入:

《机器学习与R语言(原书第2版)》一2.2 用R管理数据

这就将把一个名为pt_data.csv的文件保存到r工作目录中。参数row.names会覆盖r的默认设置,它输出csv文件中的行名称。除非数据框有行名,否则这种输出设置是不必要的,它只会增加输出文件的大小。

继续阅读