1.4.1 从文本文件中导入数据
可以使用 read.table() 函数从带分隔符的文本文件中导入数。调用格式为:
这个函数看上去很复杂,但其实很多参数在使用时不用明确指出来,使用默认值可以满足绝大部分情况,因此实际使用还是比较简单的,下面我们简单介绍一下参数含义。file: 字符型,文件名称,要从中读取文件的完整路径。
header: 逻辑型,指定是否在首行包含变量名,默认为 FALSE。
sep: 字符型,分割字符,默认为"",代表空白字符,包括空格(一个或多个)、制表符、 换行符、回车
dec: 字符型,指定小数点字符,默认为".",一般不用修改。
numerals: 字符型,在数字转换会损失精度时的处理方法,allow.loss 表示允许精度损失;warn.loss 允许精度损失,但显示一条警告信息;no.loss 不允许精度损失,即转换为数字,而是转换为因子或者不转换,保留字符串形式。
row.names 字符向量,为行指定名称。
col.names 字符向量,为列指定名称,若列名在第一行定义好了,可不用。
stringAsFactors: 逻辑型,是否将字符串自动编码为因子,默认为 TRUE。
na.strings: 字符向量,定义代表缺失值的字符串,比如c("N",".")会将 "N" 和"." 两个字符读取为缺失值,默认为 "NA"。
colClasses: 字符向量为列指定类型,比如c("numeric","character")指定第一列为数值型,第二列为字符型,若将某列指定为字符串,则不会将其自动编码为因子。
nrows: 数值型,读取的最大行数,负数为不限制。
skip: 数值型,读取前跳过的行数。
check.names: 逻辑型,是否检查变量名在 R 中的有效性,默认为 TRUE。
fill: 逻辑型,是否自动填充空白值,若各变量行数不一致,是否为空白列添加空白值。
strip.white: 逻辑型,是否自动过滤掉字符型变量前后的空格。
comment.char: 字符型,注释字符,以此字符开头的行将被忽略。
blank.lines.skip 逻辑型,是否忽略空白行,默认为 TRUE。
allowEscapes: 逻辑型,是否处理 C 语言风格的转意符。
text: 字符型,直接指定要读取的字符串,此时 file 应该为空。
encoding: 字符型,输入文本的编码,若出现乱码,请尝试更改此选项。
fileEncoding: 字符型,文件编码,若出现乱码,请尝试更改此选项。
假定我们有一个文本文件,students.txt,记录了6个学生的性别、身高和体重情况,其内容如下:
那么我们可以用以下方式读取:
read.table() 是读取按行列组织的数据的基础方式,其它同类函数,比如 read.csv() 等其实是用特定的选项调用了 read.table() 函数。在 read.table() 函数时,应尽量注意以下几点。建议明确地在首行定义变量名,并加上参数 header = TRUE。
默认的分隔符为"",可以用空格、制表符、换行符等空白字符分割内容,若非空白分割,则需明确指出。
字符型变量会被自动转换为因子型,在读大型文件时,将 stringsAsFactors 设置为 False,能加快读取速度。
默认情况下,read.table 用 # 作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。
read.table()会尽量为每个变量选择合适的数据类型,若你想明确指定请用colClasses,或者生成后根据需要修改。
若读中文时出现乱码,请尝试改变编码
1.4.2 从 Excel 表格中读取
从 Excel 里读取数据最简单的办法就是将 Excel 表格存储为以逗号分割的 csv 文件,然后用 read.csv() 函数读取。read.csv() 函数其实就是 read.table() 的定制版,其用法与 read.table() 基本一致。
若要直接读取 Excel 文件,则需安装专门的包,本书推荐 readxl 包。
readxl 中有若干读取 Excel 数据的函数,最常用的是 read.excel()。调用格式为:
path: 字符型,文件路径sheet: 字符型或数值型。若为字符型,则指定 Sheet 名;若为数值,则指定 Sheet 的位置;若不指定,默认第一个Sheetrange: 字符型或数值型,读取的单元格范围,比较复杂,请查看文档col_names: 逻辑型或字符型向量;若为逻辑型,则指定是否将第一行作为变量名;若为字符向量,则直接定义各列名col_types: 字符型向量,定义各列数据类型,比如c("numeric","character");若不指定,则自动匹配na: 字符型向量,指定读取为缺失值的字符串 ,默认情况下,会将空单元格读取为缺失值trim_ws: 逻辑型,是否自动过滤掉字符型变量前后的空白(空格、制表符、换行符skip: 数值型,读取前跳过的行数,因为空白的行会自动跳过,所以这是最小的被跳过的行数n_max: 数值型,最大读取行数guess_max: 数值型,猜测列类别时,检测的最大行数
假如,在 d 盘有一名为 students.xls 的 Excel 文件,你可以通过如下方式读取。
喜欢闲适安静的生活,懂一点计算机编程,懂一点统计学和数据分析。(爱编程爱统计)