从 R 编程中的文件中读取表格数据
通常,要读取和处理的数据已经存储在文件中,但存在于 R 环境之外。因此,在这种情况下,将数据导入 R 是一项强制性任务。 R 支持的格式有 CSV、JSON、Excel、Text、XML 等。大多数时候,要读入 R 的数据是表格格式。用于读取以行和列的形式存储的此类数据的函数,在R中导入数据并返回数据框。R中首选数据框,因为它更容易从数据框的行和列中提取数据用于统计计算任务而不是 R 中的其他数据结构。用于将表格数据读入 R 的最常用函数是:- read.table() 、 read.csv() 、 fromJSON()和read.xlxs() 。
从文本文件中读取数据
用于从文本文件中读取表格数据的函数是read.table()
参数:
- 文件:指定文件的名称。
- header: header是一个逻辑标志,指示第一行是否为包含数据的标题行。
- nrows:指定数据集中的行数。
- 跳过:帮助从头开始跳过行。
- colClasses:它是一个字符向量,表示数据集每一列的类。
- sep:它是一个字符串,指示列的分隔方式,即逗号、空格、冒号、制表符等。
对于小型或中等大小的数据集,我们可以不带任何参数调用read.table() 。 R 会自动计算出行数、列数、不同列的类别、跳过以#(comment symbol) 开头的行等。如果我们确实指定了参数,它将使执行更快更高效,但在这里,因为数据集很小,所以它不会有太大的不同,因为它已经是快速和高效的。
例子:
假设当前目录下保存有一个表格数据文件GeeksforGeeks.txt ,数据如下:
read.table("GeeksforGeeks.txt")
输出:
从 CSV 文件中读取数据
read.csv()
函数用于读取 .csv 文件,这是一种非常常见的格式,随后是 Microsoft Excel 等电子表格应用程序。 read.csv()与read.table()类似,只是read.csv()函数的默认分隔符是逗号,而read.table()的默认分隔符是空格。 read.csv()指定的另一件事是它始终指定标头等于 true。
在读取大文件时,要记住的一点是计算它存储数据集所需的近似内存。这是为了确保它不超过我们正在工作的设备中可用的RAM。所需的内存可以如下计算:
考虑表有 2000000 行和 200 列考虑是否所有列
类数字。 2000000 x 200 x 8 bytes/numeric #每个数字需要存储8个字节=3200000000/ 字节/MB =3051.76/ MB =2.98 GB 大约需要两倍的 RAM,即 5.96 GB。
另一个可以用来减少时间消耗的措施是包含colClasses参数,这样 R 就不必搜索数据集每一列的类。如果预先指定了行数,即nrows ,那么它将有助于减少内存使用。
例子:
假设当前目录下保存有一个表格数据文件GeeksforGeeks.csv ,数据如下:
read.csv("GeeksforGeeks.csv")
输出 :
从 JSON 文件中读取数据
fromJSON()
函数用于将 JSON 数据转换为 R 对象。此函数需要安装rjson包。这可以通过以下命令完成:
install.packages("rjson")
例子:
让当前目录下保存一个.json文件GeeksforGeeks.json ,内容如下:
library(rjson) #loads the rjson library
fromJSON(file="GeeksforGeeks.json")
输出:
as.data.frame(fromJSON(file="GeeksforGeeks.json"))
输出:
阅读 Excel 表格
R函数read.xlsx()
用于将 Excel 工作表的内容读入 R 数据框中。此函数需要安装xlsx包。这可以通过使用以下命令来完成:
install.packages("xlsx")
例子:
假设当前目录下保存有一个Excel文件gfg.xlsx ,内容如下:
library("xlsx") #loads the xlsx library
read.xlsx("gfg.xlsx", 1) #here 1 represents the sheet number
输出:
在这里,我们可以观察到read.xlsx()
已经返回了一个 data.frame 作为输出。
但如果要读取大型数据集(超过 100000 个单元格),则首选使用read.xlsx2() 。 read.xlsx2()在大文件上的工作速度比read.xlsx( ) 快。 read.xlsx2() 的结果将与read.xlsx()不同,因为内部read.xlsx2()使用readColumns()这是为表格数据。