Logo
Section 1 / 3

在 R 中读取和加载数据

学习如何使用 R 从各种数据源读取和加载数据。

导入

在 R 中读取和加载数据

学习如何使用 R 从各种数据源读取和加载数据。

从各种数据源读取和加载数据

数据分析的旅程始于数据源的管理。
在R语言中,文件管理对于许多实践至关重要。它使用户能够:

  • 高效地组织和管理数据
  • 节省时间和精力
  • 消除潜在的版本错误
  • 跟踪变更记录
  • 与同事共享数据

数据可以从多种来源读取,最常见的包括逗号分隔值(CSV)、Microsoft Excel(XLS、XLSX)以及RData文件(RData、RDS)。我们使用不同的函数来从不同来源获取数据。

读取CSV文件

逗号分隔值(CSV)文件是一种纯文本文件,以纯文本形式存储表格数据(数字和文本)。CSV文件中的每一行代表表格的一行,该行内的各列由逗号分隔。

CSV是工业界最广泛使用的格式之一。R内置了函数来方便地读取CSV文件。我们可以使用 read.csv() 函数,通过传入文件路径来读取CSV文件。

1df <- read.csv('Documents/Crime.csv') # 传入文件路径以读取文件 2print(head(df, 5)) # 打印数据框的前5行

注意: head(data, x) 函数用于选择数据框的前 x 行;类似地,tail(data, x) 函数用于选择最后 x 行。

read.csv() 函数的参数

我们可以通过使用参数来调整 read.csv() 函数的功能。以下是常用的一些参数:

  • sep=",":
    sep= 参数决定了读取的是TSV、CSV还是其他使用分隔符的文件。默认情况下,CSV文件的分隔符是 ,(逗号)。如果数据使用特定字符作为分隔符,可以在该参数中指定该字符来读取文件。

  • stringsAsFactors = TRUE:
    在处理非数值数据时,stringsAsFactors 参数非常重要,因为它可将字符串值转换为因子类型。这一功能在过滤或排序数据时非常有用,因为它能创建不可变的分类数据。该参数的默认值为 TRUE。

  • header = TRUE:
    当设置为 FALSE 时,header 参数会隐藏列名。默认值为 TRUE。

  • strip.white = FALSE:
    当设置为 TRUE 时,此参数会删除值周围的空白字符,这在数据录入不规范或结构不完整的情况下非常有帮助。默认值为 FALSE。

下面的代码示例有助于更好地理解这些参数。欢迎自行尝试修改代码,实践是快速掌握的最佳方式。

1df1 <- read.csv('customer.csv', sep=';', header=TRUE, strip.white=TRUE, stringsAsFactors=FALSE) # 使用分号分隔的CSV文件 2print(df1) # 打印数据 3print('--------------------------------') 4df1 <- read.csv('customer1.csv', sep='/', strip.white=FALSE, stringsAsFactors=TRUE) # 使用斜杠分隔的文本文件 5print(df1) 6print('--------------------------------') 7print('当 header 参数设为 FALSE 时:') 8df1 <- read.csv('customer1.csv', sep='/', header=FALSE, strip.white=TRUE, stringsAsFactors=TRUE) # 注意 header=FALSE 时列名的变化 9print(df1)

读取TSV文件

制表符分隔值(TSV)文件与CSV文件非常相似。TSV文件中的值由制表符分隔。

制表符在语法中用 \t 表示。一个制表符通常由2、4或8个空格字符组成,具体取决于平台的配置。

当使用 sep='\t' 参数时,可以使用 read.csv() 函数读取TSV文件。

1# 使用 read.csv() 函数读取 TSV 文件 2df <- read.csv('Documents/coffee_sales.tsv', sep='\t') 3print(head(df, 5)) # 查看数据预览

读取Excel文件

Excel文件是以行列形式存储数据的文件。它是微软开发的一种专有格式,常用于数据分析、财务建模以及其他类型的数据组织与处理。

Excel文件为用户提供强大的工具,利用独特的XLS或XLSX格式来存储、组织和分析数据。

尽管R本身不原生支持读取Excel文件,但借助 readxl 库,我们可以轻松访问Excel文件中的数据。读取Excel文件的语法与其他文件类型类似。

1library(readxl) # 调用 readxl 库 2df1 <- read_excel('Documents/data.xlsx') # 提供Excel文件的路径 3print(head(df1, 5)) # 仅打印文件的前5行

读取RData和RDS文件

RData 和 RDS 文件是由R统计软件生成的二进制文件。它们包含数据对象、工作空间和编译后的代码。这些文件用于存储数据,并在不同的R会话之间传输数据。

由于这类文件中保存了变量名称,因此在读取前应先检查文件中存储的变量名。读取方法如下:

1# 读取 RData 文件 2variables <- load('Documents/business.Rdata') # 加载 RData 文件 3print(variables) # 查看存储的变量名 4print('----------------------------------------') 5print(product_sales) # 打印变量 6print('----------------------------------------') 7print(customer_data) # 打印变量

读取文本文件

TXT文件仅包含纯文本,即无结构或格式化的文字。它们常用于存储数据,以及在不同应用程序和平台之间传输文本。我们可以使用内置的 readLines() 函数,或使用 readr 库中的 read_file() 函数来读取这些文件。

readLines() 函数返回一个向量数组,其中每个元素对应文件中的一行。
read_file() 函数返回一个单一的字符串对象,该对象通过在每行之间插入 \n(换行符)将所有行连接起来。

两者的区别如下:

1# 读取文本文件 2library(readr) # 调用 readr 库 3text <- readLines('Hello.txt') # 使用内置函数读取文件 4print(text) 5print('-----------------------------') 6text1 <- read_file('Hello.txt') # 使用 readr 函数读取文件 7print(text1)

设置工作目录

如果需要在一个目录中处理多个文件,可以使用 setwd() 函数定义一个共享的工作目录。这样,只需提供文件名即可访问该目录下的文件,无需每次手动输入完整的路径。
要查看当前工作目录,可以使用 getwd() 函数。

这种方法在处理来自多个数据源的数据时极为有用。预先设定好目录后进行分析,可以简化流程,节省用户的时间和精力。

1print('初始工作目录:') 2getwd() # 查看默认工作目录 3# 不再需要写这么长的路径: 4df <- read.csv('/usercode/Documents/Crime.csv') # 通过提供完整路径读取数据 5print(head(df, 3)) # 打印数据 6# 设置工作目录 7setwd('/usercode/Documents/') 8print('--------------------------------') 9# 现在无需每次都写 '/usercode/Documents/' 部分 10# 只需提供文件名即可 11print('修改后的工作目录:') 12getwd() # 再次查看当前目录 13df1 <- read.csv('Crime.csv') # 无需提供完整路径即可读取文件 14print(head(df1, 3)) # 打印数据

请注意,在第4行中,我们提供了完整的 /usercode/Documents/Crime.csv 路径来读取文件。
然后在第7行中,使用 setwd() 函数将工作目录设置为 /usercode/Documents/。
现在,我们不再需要在代码中重复输入整个工作目录路径,只需提供文件名,R就能找到对应的文件。

入门

在 R 中保存数据到文件