加载 TXT、CSV 以及其他分隔文件

发布: (2025年12月18日 GMT+8 00:53)
7 min read
原文: Dev.to

Source: Dev.to

本文涵盖内容

我们将逐步讲解导入:

  • TXT、CSV 以及其他分隔文件
  • JSON 文件
  • XML 和 HTML 表格
  • Excel 工作簿
  • SAS、SPSS、Stata 数据集
  • MATLAB 和 Octave 文件
  • 通过 ODBC 的关系型数据库

我们还会分享一个快速导入技巧,非常适合进行快速、临时的分析。

在导入数据前准备工作区

精心准备的环境可以节省时间,并避免后续出现不必要的错误。

理解并设置工作目录

大多数项目会把所有相关的数据文件存放在同一个文件夹中。你可以让 R 将该文件夹视为工作目录,从而使用相对路径导入文件。

# 检查当前工作目录
getwd()

如果文件位于其他位置,修改工作目录:

setwd("path/to/your/project/folder")

设置后,除非另行指定,R 会自动在此文件夹中查找文件。

清理工作区

上一次会话留下的对象可能会悄悄干扰你的分析。通常最好从头开始:

rm(list = ls())

提示: 退出 R 时禁用保存工作区(例如使用 R --no-save),以确保每次会话都是干净的。

加载 TXT、CSV 以及其他分隔文件

分隔文本文件是最常见的数据格式之一。这些文件将值用制表符、逗号或分号等分隔符分开存储。

读取文本文件

制表符分隔文件示例

Category    V1    V2
A           3     2
B           5     6
B           2     3
A           4     8
A           7     3
# Generic read.table() call
df

注意: 该方法适用于快速检查,但不推荐用于可重复的流水线。

使用包导入数据

许多复杂格式需要外部包。使用前先安装并加载相应的包:

install.packages("packageName")
library(packageName)

读取 JSON 文件

# 安装并加载 rjson 包
install.packages("rjson")
library(rjson)

# 从本地文件读取
json_data <- fromJSON(file = "input.json")

# 直接从 URL 读取
json_data <- fromJSON(file = "https://example.com/data.json")

json_data 被导入为列表。若需要,可转换为数据框:

json_df <- as.data.frame(json_data)

导入 XML 数据和 HTML 表格

读取 XML 文件

install.packages(c("XML", "RCurl"))
library(XML)
library(RCurl)

# 从 URL 读取
xml_raw <- getURL("https://example.com/data.xml")
xml_data <- xmlTreeParse(xml_raw, useInternalNodes = TRUE)

# 转换为数据框(如果 XML 结构是表格形式)
xml_df <- xmlToDataFrame(xmlRoot(xml_data))

从 HTML 页面提取表格

install.packages("XML")
library(XML)

# 读取网页中的所有表格
html_tables <- readHTMLTable(getURL("https://example.com/page.html"))

# 示例:选择第一个表格
df_html <- html_tables[[1]]

读取 Excel 工作簿

readxl 轻量且不依赖 Java 或 Perl。

install.packages("readxl")
library(readxl)

# 第一个工作表(默认)
df_excel <- read_excel("file.xlsx")

# 按名称指定工作表
df_sheet3 <- read_excel("file.xlsx", sheet = "Sheet3")

# 按索引指定工作表
df_sheet3_idx <- read_excel("file.xlsx", sheet = 3)

从统计软件导入数据

SAS、SPSS 和 Stata 文件

haven 包会保留变量标签和因子信息。

install.packages("haven")
library(haven)

sas_data  <- read_sas("data.sas7bdat")
spss_data <- read_sav("data.sav")
stata_data <- read_dta("data.dta")

MATLAB 和 Octave 文件

# MATLAB .mat 文件
install.packages("R.matlab")
library(R.matlab)

mat_data <- readMat("file.mat")
# Octave 文本文件(通过 foreign 包)
install.packages("foreign")
library(foreign)

octave_data <- read.octave("file.txt")

从关系型数据库导入数据(ODBC)

install.packages("RODBC")
library(RODBC)

# 建立连接(请替换为你的 DSN、用户名和密码)
con <- odbcConnect("my_dsn", uid = "my_user", pwd = "my_password")

# 获取整张表
df_table1 <- sqlFetch(con, "Table1")

# 执行自定义查询
df_query <- sqlQuery(con, "SELECT * FROM Table2 WHERE year = 2023")

# 完成后关闭连接
odbcClose(con)

在 R 中更轻松导入数据的技巧

  • 确保列名唯一 – 重复的列名会导致引用歧义。
  • 避免在变量名中使用空格和特殊字符;请使用下划线 (_) 替代。
  • 将空白值替换为 NA(例如在 read.table 中使用 na.strings = c("", "NA"))。
  • 遵循一致的命名约定(snake_case、camelCase 等),在整个项目中保持统一。
  • 删除注释或元数据行,在导入原始数据文件之前,或使用 comment.char 参数。

导入愉快! 🎉

更倾向于简短且有意义的变量名

保持代码风格的一致性。

结束语

将数据加载到 R 中只是更大数据分析旅程的第一步。数据进入 R 后,真正的工作才开始——清洗、转换、可视化和建模。

在本文中,我们介绍了如何从以下来源导入数据:

  • 平面文件(TXT,CSV)
  • 网络格式(JSON,XML,HTML)
  • Excel 工作簿
  • 统计软件
  • 通过 ODBC 连接的数据库

与 R 中的大多数事物一样,完成同一任务有多种方法。本指南侧重于最常用且可靠的方法。

如果您知道更好或更快的替代方案,欢迎分享——学习 R 始终是一个协作过程。

祝导入愉快……让 R 更易用。

关于 Perceptive Analytics

我们的使命是 “帮助企业在数据中释放价值。” 在过去的 20 年里,我们已与超过 100 家客户合作——从《财富》500 强公司到中型企业——解决复杂的数据分析挑战。

我们的服务包括提供经验丰富的 Power BI freelancers 和与值得信赖的 Snowflake consultant 合作,将数据转化为战略洞察。

我们非常乐意与您交流。请随时联系我们。

Back to Blog

相关文章

阅读更多 »