R 语言之数据获取操作
文章和代码已经归档至【Github 仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R 语言 也可获取。
实际上,R 中有大量的内置数据集可用于分析和实践,我们也可以在 R 中创建模拟特定分布的数据。而在实际工作中,数据分析者更多时候面对的是来自多种数据源的外部数据,即各式各样扩展名的数据文件,如 .txt、.csv、.xlsx、.xls 等。不同扩展名的文件代表不同的文件格式,这常常会给分析者带来困扰。
R 提供了适用范围广泛的数据导入工具。
1.获取内置数据集
R 中的内置数据集存在于各个包中,其中基本包 datasets
里只有数据集,没有函数。这个包提供了近 100 个数据集,涵盖医学、自然、社会学等各个领域。
你可以用下面的命令进行查看:
如果想要调用某个数据集,可以使用 data( )
函数。运行下面的命令,R 会加载数据集 iris 到工作空间。
除了 datasets 包,R 中很多其他的包也带有数据集。如果不是运行 R 后自动加载的基本包,我们需要安装和加载这些包以后才能使用其中的数据。下面以 MASS 包里的数据集 bacteria 为例说明数据的调用过程:
2. 模拟特定分布的数据
R 提供了一系列可以用于数值模拟的函数。这些函数以 r
开头,常用的有:rnorm( )、runif( )、rbinom( )和 rpois( ) 等。例如:
3. 获取其他格式的数据
3.1 txt 与 csv 格式
如果数据来源是一个用 Windows 记事本或其他纯文本编辑器所创建的 ASCII 格式文件,我们可以使用函数 read.table( )
读取其中的数据,返回的是一个数据框。
例如,假设创建的数据框 patients 的数据文件 patients.txt
存放于当前工作目录下,我们可以使用下面的命令读取该数据:
在电子表格和数据库应用中经常会生成带分隔符的文本文件,其中 .csv 文件是用逗号分隔取值(Comma Separated Values)。函数 read.csv( )
是函数 read.table( ) 的一个变体,专用于读取 .csv 文件。
read.table ( )
和read.csv ( )
两个函数中参数的默认值是不同的。在函数read.table ( )
中,参数 header 默认值为 FALSE,即认为文件第一行开始就是数据而非变量名。而在函数read.csv ( )
中,参数 header 默认值为 TRUE。因此,在读入数据前,建议先打开原始文件进行查看,然后设置恰当的参数正确地读入数据。
3.2 xls 或 xlsx 格式
读取电子表格数据有很多种方式,其中最简单的方式是在 Excel 中将数据文件另存为一个逗号分隔(.csv)文件,然后用上述读取.csv 文件的方法将其读入 R。还可以借助第三方包(例如 openxlsx 包、readxl 包和 gdata 包)直接读取 xlsx 或 xls 格式的数据文件。
以 openxlsx 包为例:
3.3 导入其他统计软件的数据
有时我们需要读取其他统计软件产生的数据,如 SPSS、SAS、Stata、Minitab 等。一种方法是从其他统计软件将数据输出为文本文件,然后使用函数 read.table( ) 或 read.csv( ) 将数据读入 R。另一种方法是借助扩展包,比如 foreign 包,该包的主要功能就是读写其他统计软件的数据。
下面以导入 SPSS 数据文件为例进行说明。
假设数据文件 patients.sav
存放于当前工作目录下,我们可以使用下面的命令将该数据集读入 R:
用 foreign 包导入 SAS、Stata 等软件的数据文件的过程与上面类似,具体请查阅文档。
4.数据录入
在 R 中可以直接输入数据,但是如果数据量较大(超过 10 列或超过 30 行),在 R 里录入数据并不是一个最佳选择。我们可以选择电子表格软件录入小规模的数据,比如 Excel。
但是如果数据量很大,使用电子表格软件手工录入数据的出错概率也较大。这时,专门为数据录入而设计的程序软件更为合适,比如免费的软件 EpiData。该软件不仅可以方便地设置数据录入的约束条件,比如范围检查、自动换行等,还可以对每个变量和变量值添加标签。
foreign 包里的函数
read.epiinfo( )
可以直接读取 EpiData 生成的 .rec 文件,但是建议先在 EpiData 中将录入的数据导出为 Stata 数据文件,然后在 R 中使用函数 read.dta( ) 读入数据。这样做的好处是可以保留在 EpiData 中预设的变量的属性,例如变量标签和描述等。
版权声明: 本文为 InfoQ 作者【timerring】的原创文章。
原文链接:【http://xie.infoq.cn/article/1c507c9555da5a0102837d8c5】。未经作者许可,禁止转载。
评论