加载 TXT、CSV 以及其他分隔文件
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 合作,将数据转化为战略洞察。
我们非常乐意与您交流。请随时联系我们。